@tstdl/base 0.93.77 → 0.93.80

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 (105) hide show
  1. package/authentication/client/http-client.middleware.js +2 -2
  2. package/authentication/models/authentication-credentials.model.d.ts +2 -2
  3. package/authentication/models/authentication-credentials.model.js +5 -3
  4. package/authentication/models/authentication-session.model.d.ts +2 -2
  5. package/authentication/models/authentication-session.model.js +5 -3
  6. package/authentication/models/index.d.ts +4 -0
  7. package/authentication/models/index.js +4 -0
  8. package/authentication/models/service-account.model.d.ts +7 -0
  9. package/authentication/models/service-account.model.js +31 -0
  10. package/authentication/models/subject.model.d.ts +16 -0
  11. package/authentication/models/subject.model.js +59 -0
  12. package/authentication/models/system-account.model.d.ts +5 -0
  13. package/authentication/models/system-account.model.js +25 -0
  14. package/authentication/models/user.model.d.ts +15 -0
  15. package/authentication/models/user.model.js +47 -0
  16. package/authentication/server/drizzle/0000_violet_callisto.sql +99 -0
  17. package/authentication/server/drizzle/meta/0000_snapshot.json +500 -6
  18. package/authentication/server/drizzle/meta/_journal.json +2 -2
  19. package/authentication/server/index.d.ts +1 -0
  20. package/authentication/server/index.js +1 -0
  21. package/authentication/server/schemas.d.ts +16 -1
  22. package/authentication/server/schemas.js +7 -1
  23. package/authentication/server/subject.service.d.ts +6 -0
  24. package/authentication/server/subject.service.js +44 -0
  25. package/circuit-breaker/circuit-breaker.d.ts +32 -0
  26. package/circuit-breaker/circuit-breaker.js +9 -0
  27. package/circuit-breaker/index.d.ts +2 -0
  28. package/circuit-breaker/index.js +2 -0
  29. package/circuit-breaker/postgres/circuit-breaker.d.ts +7 -0
  30. package/circuit-breaker/postgres/circuit-breaker.js +78 -0
  31. package/circuit-breaker/postgres/drizzle/0000_hard_shocker.sql +9 -0
  32. package/circuit-breaker/postgres/drizzle/meta/0000_snapshot.json +82 -0
  33. package/circuit-breaker/postgres/drizzle/meta/_journal.json +13 -0
  34. package/circuit-breaker/postgres/drizzle.config.d.ts +2 -0
  35. package/circuit-breaker/postgres/drizzle.config.js +11 -0
  36. package/circuit-breaker/postgres/index.d.ts +5 -0
  37. package/circuit-breaker/postgres/index.js +5 -0
  38. package/circuit-breaker/postgres/model.d.ts +9 -0
  39. package/circuit-breaker/postgres/model.js +40 -0
  40. package/circuit-breaker/postgres/module.d.ts +6 -0
  41. package/circuit-breaker/postgres/module.js +25 -0
  42. package/circuit-breaker/postgres/provider.d.ts +6 -0
  43. package/circuit-breaker/postgres/provider.js +21 -0
  44. package/circuit-breaker/postgres/schemas.d.ts +8 -0
  45. package/circuit-breaker/postgres/schemas.js +6 -0
  46. package/circuit-breaker/provider.d.ts +4 -0
  47. package/circuit-breaker/provider.js +2 -0
  48. package/circuit-breaker/tests/circuit-breaker.test.js +113 -0
  49. package/document-management/models/document.model.d.ts +0 -1
  50. package/document-management/models/document.model.js +0 -5
  51. package/document-management/server/api/document-management.api.js +1 -2
  52. package/document-management/server/drizzle/{0000_ordinary_pretty_boy.sql → 0000_glamorous_lorna_dane.sql} +96 -76
  53. package/document-management/server/drizzle/meta/0000_snapshot.json +360 -142
  54. package/document-management/server/drizzle/meta/_journal.json +2 -9
  55. package/document-management/server/services/document-collection.service.js +3 -3
  56. package/document-management/server/services/document-management-ancillary.service.d.ts +1 -1
  57. package/document-management/server/services/document-management.service.js +1 -1
  58. package/document-management/server/services/document-workflow.service.js +5 -5
  59. package/document-management/server/services/document.service.d.ts +0 -2
  60. package/document-management/server/services/document.service.js +1 -2
  61. package/document-management/service-models/enriched/enriched-document.view.d.ts +1 -1
  62. package/examples/document-management/main.d.ts +1 -1
  63. package/examples/document-management/main.js +1 -1
  64. package/logger/transports/console.d.ts +1 -1
  65. package/logger/transports/console.js +4 -1
  66. package/message-bus/message-bus-base.js +1 -1
  67. package/orm/server/drizzle/schema-converter.js +53 -32
  68. package/package.json +6 -3
  69. package/queue/enqueue-batch.d.ts +11 -11
  70. package/queue/enqueue-batch.js +2 -3
  71. package/queue/index.d.ts +1 -0
  72. package/queue/index.js +1 -0
  73. package/queue/postgres/drizzle/0003_tricky_venom.sql +30 -0
  74. package/queue/postgres/drizzle/meta/0003_snapshot.json +288 -0
  75. package/queue/postgres/drizzle/meta/_journal.json +7 -0
  76. package/queue/postgres/drizzle.config.js +2 -2
  77. package/queue/postgres/index.d.ts +1 -1
  78. package/queue/postgres/index.js +1 -1
  79. package/queue/postgres/module.d.ts +1 -1
  80. package/queue/postgres/module.js +1 -1
  81. package/queue/postgres/queue.d.ts +52 -23
  82. package/queue/postgres/queue.js +582 -64
  83. package/queue/postgres/queue.provider.d.ts +1 -1
  84. package/queue/postgres/schemas.d.ts +13 -2
  85. package/queue/postgres/schemas.js +4 -2
  86. package/queue/postgres/task.model.d.ts +24 -0
  87. package/queue/postgres/task.model.js +115 -0
  88. package/queue/provider.d.ts +1 -1
  89. package/queue/queue.d.ts +158 -37
  90. package/queue/queue.js +97 -19
  91. package/queue/task-context.d.ts +38 -0
  92. package/queue/task-context.js +102 -0
  93. package/queue/tests/queue.test.d.ts +1 -0
  94. package/queue/tests/queue.test.js +623 -0
  95. package/test4.d.ts +1 -1
  96. package/test4.js +1 -1
  97. package/utils/format-error.d.ts +17 -20
  98. package/utils/format-error.js +105 -47
  99. package/authentication/server/drizzle/0000_calm_warlock.sql +0 -28
  100. package/document-management/server/drizzle/0001_lyrical_wong.sql +0 -123
  101. package/document-management/server/drizzle/meta/0001_snapshot.json +0 -2728
  102. package/queue/postgres/job.model.d.ts +0 -12
  103. package/queue/postgres/job.model.js +0 -53
  104. package/test6.js +0 -33
  105. /package/{test6.d.ts → circuit-breaker/tests/circuit-breaker.test.d.ts} +0 -0
@@ -0,0 +1,288 @@
1
+ {
2
+ "id": "705393d9-616b-4a01-9553-3b5408f64180",
3
+ "prevId": "74e8909c-3a81-46a3-9fe7-176e263da2df",
4
+ "version": "7",
5
+ "dialect": "postgresql",
6
+ "tables": {
7
+ "queue.task": {
8
+ "name": "task",
9
+ "schema": "queue",
10
+ "columns": {
11
+ "id": {
12
+ "name": "id",
13
+ "type": "uuid",
14
+ "primaryKey": true,
15
+ "notNull": true,
16
+ "default": "gen_random_uuid()"
17
+ },
18
+ "queue": {
19
+ "name": "queue",
20
+ "type": "text",
21
+ "primaryKey": false,
22
+ "notNull": true
23
+ },
24
+ "status": {
25
+ "name": "status",
26
+ "type": "task_state",
27
+ "typeSchema": "queue",
28
+ "primaryKey": false,
29
+ "notNull": true
30
+ },
31
+ "tag": {
32
+ "name": "tag",
33
+ "type": "text",
34
+ "primaryKey": false,
35
+ "notNull": false
36
+ },
37
+ "priority": {
38
+ "name": "priority",
39
+ "type": "integer",
40
+ "primaryKey": false,
41
+ "notNull": true
42
+ },
43
+ "parent_id": {
44
+ "name": "parent_id",
45
+ "type": "uuid",
46
+ "primaryKey": false,
47
+ "notNull": false
48
+ },
49
+ "lease": {
50
+ "name": "lease",
51
+ "type": "uuid",
52
+ "primaryKey": false,
53
+ "notNull": false
54
+ },
55
+ "enqueue_timestamp": {
56
+ "name": "enqueue_timestamp",
57
+ "type": "timestamp with time zone",
58
+ "primaryKey": false,
59
+ "notNull": true
60
+ },
61
+ "schedule_timestamp": {
62
+ "name": "schedule_timestamp",
63
+ "type": "timestamp with time zone",
64
+ "primaryKey": false,
65
+ "notNull": true
66
+ },
67
+ "start_timestamp": {
68
+ "name": "start_timestamp",
69
+ "type": "timestamp with time zone",
70
+ "primaryKey": false,
71
+ "notNull": false
72
+ },
73
+ "expiration_timestamp": {
74
+ "name": "expiration_timestamp",
75
+ "type": "timestamp with time zone",
76
+ "primaryKey": false,
77
+ "notNull": false
78
+ },
79
+ "lock_expiration_timestamp": {
80
+ "name": "lock_expiration_timestamp",
81
+ "type": "timestamp with time zone",
82
+ "primaryKey": false,
83
+ "notNull": false
84
+ },
85
+ "complete_timestamp": {
86
+ "name": "complete_timestamp",
87
+ "type": "timestamp with time zone",
88
+ "primaryKey": false,
89
+ "notNull": false
90
+ },
91
+ "tries": {
92
+ "name": "tries",
93
+ "type": "integer",
94
+ "primaryKey": false,
95
+ "notNull": true
96
+ },
97
+ "progress": {
98
+ "name": "progress",
99
+ "type": "double precision",
100
+ "primaryKey": false,
101
+ "notNull": true
102
+ },
103
+ "data": {
104
+ "name": "data",
105
+ "type": "jsonb",
106
+ "primaryKey": false,
107
+ "notNull": false
108
+ },
109
+ "state": {
110
+ "name": "state",
111
+ "type": "jsonb",
112
+ "primaryKey": false,
113
+ "notNull": false
114
+ },
115
+ "result": {
116
+ "name": "result",
117
+ "type": "jsonb",
118
+ "primaryKey": false,
119
+ "notNull": false
120
+ },
121
+ "error": {
122
+ "name": "error",
123
+ "type": "jsonb",
124
+ "primaryKey": false,
125
+ "notNull": false
126
+ }
127
+ },
128
+ "indexes": {
129
+ "task_parent_id_status_idx": {
130
+ "name": "task_parent_id_status_idx",
131
+ "columns": [
132
+ {
133
+ "expression": "parent_id",
134
+ "isExpression": false,
135
+ "asc": true,
136
+ "nulls": "last"
137
+ },
138
+ {
139
+ "expression": "status",
140
+ "isExpression": false,
141
+ "asc": true,
142
+ "nulls": "last"
143
+ }
144
+ ],
145
+ "isUnique": false,
146
+ "concurrently": false,
147
+ "method": "btree",
148
+ "with": {}
149
+ },
150
+ "task_queue_complete_timestamp_idx": {
151
+ "name": "task_queue_complete_timestamp_idx",
152
+ "columns": [
153
+ {
154
+ "expression": "queue",
155
+ "isExpression": false,
156
+ "asc": true,
157
+ "nulls": "last"
158
+ },
159
+ {
160
+ "expression": "complete_timestamp",
161
+ "isExpression": false,
162
+ "asc": true,
163
+ "nulls": "last"
164
+ }
165
+ ],
166
+ "isUnique": false,
167
+ "concurrently": false,
168
+ "method": "btree",
169
+ "with": {}
170
+ },
171
+ "task_queue_status_lock_expiration_timestamp_idx": {
172
+ "name": "task_queue_status_lock_expiration_timestamp_idx",
173
+ "columns": [
174
+ {
175
+ "expression": "queue",
176
+ "isExpression": false,
177
+ "asc": true,
178
+ "nulls": "last"
179
+ },
180
+ {
181
+ "expression": "status",
182
+ "isExpression": false,
183
+ "asc": true,
184
+ "nulls": "last"
185
+ },
186
+ {
187
+ "expression": "lock_expiration_timestamp",
188
+ "isExpression": false,
189
+ "asc": true,
190
+ "nulls": "last"
191
+ }
192
+ ],
193
+ "isUnique": false,
194
+ "concurrently": false,
195
+ "method": "btree",
196
+ "with": {}
197
+ },
198
+ "task_queue_status_priority_schedule_timestamp_idx": {
199
+ "name": "task_queue_status_priority_schedule_timestamp_idx",
200
+ "columns": [
201
+ {
202
+ "expression": "queue",
203
+ "isExpression": false,
204
+ "asc": true,
205
+ "nulls": "last"
206
+ },
207
+ {
208
+ "expression": "status",
209
+ "isExpression": false,
210
+ "asc": true,
211
+ "nulls": "last"
212
+ },
213
+ {
214
+ "expression": "priority",
215
+ "isExpression": false,
216
+ "asc": true,
217
+ "nulls": "last"
218
+ },
219
+ {
220
+ "expression": "schedule_timestamp",
221
+ "isExpression": false,
222
+ "asc": true,
223
+ "nulls": "last"
224
+ }
225
+ ],
226
+ "isUnique": false,
227
+ "concurrently": false,
228
+ "method": "btree",
229
+ "with": {}
230
+ }
231
+ },
232
+ "foreignKeys": {
233
+ "task_parent_id_task_id_fk": {
234
+ "name": "task_parent_id_task_id_fk",
235
+ "tableFrom": "task",
236
+ "tableTo": "task",
237
+ "schemaTo": "queue",
238
+ "columnsFrom": [
239
+ "parent_id"
240
+ ],
241
+ "columnsTo": [
242
+ "id"
243
+ ],
244
+ "onDelete": "no action",
245
+ "onUpdate": "no action"
246
+ }
247
+ },
248
+ "compositePrimaryKeys": {},
249
+ "uniqueConstraints": {
250
+ "task_queue_tag_unique": {
251
+ "name": "task_queue_tag_unique",
252
+ "nullsNotDistinct": false,
253
+ "columns": [
254
+ "queue",
255
+ "tag"
256
+ ]
257
+ }
258
+ },
259
+ "policies": {},
260
+ "checkConstraints": {},
261
+ "isRLSEnabled": false
262
+ }
263
+ },
264
+ "enums": {
265
+ "queue.task_state": {
266
+ "name": "task_state",
267
+ "schema": "queue",
268
+ "values": [
269
+ "pending",
270
+ "running",
271
+ "completed",
272
+ "cancelled",
273
+ "waiting",
274
+ "dead"
275
+ ]
276
+ }
277
+ },
278
+ "schemas": {},
279
+ "sequences": {},
280
+ "roles": {},
281
+ "policies": {},
282
+ "views": {},
283
+ "_meta": {
284
+ "columns": {},
285
+ "schemas": {},
286
+ "tables": {}
287
+ }
288
+ }
@@ -22,6 +22,13 @@
22
22
  "when": 1760974453539,
23
23
  "tag": "0002_dear_meggan",
24
24
  "breakpoints": true
25
+ },
26
+ {
27
+ "idx": 3,
28
+ "version": "7",
29
+ "when": 1767731213291,
30
+ "tag": "0003_tricky_venom",
31
+ "breakpoints": true
25
32
  }
26
33
  ]
27
34
  }
@@ -6,6 +6,6 @@ export default defineConfig({
6
6
  schema: resolve(__dirname, './schemas.js'),
7
7
  migrations: {
8
8
  schema: 'queue',
9
- table: '_migrations'
10
- }
9
+ table: '_migrations',
10
+ },
11
11
  });
@@ -1,4 +1,4 @@
1
- export * from './job.model.js';
1
+ export * from './task.model.js';
2
2
  export * from './module.js';
3
3
  export * from './queue.js';
4
4
  export * from './queue.provider.js';
@@ -1,4 +1,4 @@
1
- export * from './job.model.js';
1
+ export * from './task.model.js';
2
2
  export * from './module.js';
3
3
  export * from './queue.js';
4
4
  export * from './queue.provider.js';
@@ -3,7 +3,7 @@ export declare class PostgresQueueModuleConfig {
3
3
  database?: DatabaseConfig;
4
4
  }
5
5
  /**
6
- * configure mail module
6
+ * configure queue module
7
7
  */
8
8
  export declare function configurePostgresQueue(config?: PostgresQueueModuleConfig, register?: boolean): void;
9
9
  export declare function migratePostgresQueueSchema(): Promise<void>;
@@ -9,7 +9,7 @@ export class PostgresQueueModuleConfig {
9
9
  database;
10
10
  }
11
11
  /**
12
- * configure mail module
12
+ * configure queue module
13
13
  */
14
14
  export function configurePostgresQueue(config, register = true) {
15
15
  Injector.register(PostgresQueueModuleConfig, { useValue: config });
@@ -1,31 +1,60 @@
1
1
  import { CancellationSignal } from '../../cancellation/index.js';
2
+ import type { Query } from '../../orm/index.js';
3
+ import { type Transaction } from '../../orm/server/index.js';
2
4
  import type { ObjectLiteral } from '../../types/index.js';
3
- import { Queue, type EnqueueManyItem, type EnqueueManyOptions, type EnqueueOneOptions, type Job, type JobTag } from '../queue.js';
4
- export declare class PostgresQueue<T extends ObjectLiteral> extends Queue<T> {
5
+ import { Queue, type EnqueueManyItem, type EnqueueManyOptions, type EnqueueOneOptions, type Task, type TaskTag } from '../queue.js';
6
+ export declare class PostgresQueue<Data extends ObjectLiteral, State extends ObjectLiteral, Result extends ObjectLiteral> extends Queue<Data, State, Result> {
5
7
  #private;
6
8
  readonly processTimeout: number;
9
+ readonly executionTimeout: number;
7
10
  readonly maxTries: number;
8
- enqueue(data: T, options?: EnqueueOneOptions): Promise<Job<T>>;
9
- enqueueMany(items: EnqueueManyItem<T>[], options?: EnqueueManyOptions & {
10
- returnJobs?: false;
11
+ readonly retryDelayMinimum: number;
12
+ readonly retryDelayMaximum: number;
13
+ readonly retryDelayGrowth: number;
14
+ readonly retentionPeriod: number;
15
+ readonly globalConcurrency: number | null;
16
+ enqueue(data: Data, options?: EnqueueOneOptions): Promise<Task<Data, State, Result>>;
17
+ enqueueMany(items: EnqueueManyItem<Data>[], options?: EnqueueManyOptions & {
18
+ returnTasks?: false;
11
19
  }): Promise<void>;
12
- enqueueMany(items: EnqueueManyItem<T>[], options: EnqueueManyOptions & {
13
- returnJobs: true;
14
- }): Promise<Job<T>[]>;
15
- enqueueMany(items: EnqueueManyItem<T>[], options?: EnqueueManyOptions): Promise<Job<T>[] | undefined>;
20
+ enqueueMany(items: EnqueueManyItem<Data>[], options: EnqueueManyOptions & {
21
+ returnTasks: true;
22
+ }): Promise<Task<Data, State, Result>[]>;
23
+ enqueueMany(items: EnqueueManyItem<Data>[], options?: EnqueueManyOptions): Promise<Task<Data, State, Result>[] | undefined>;
16
24
  has(id: string): Promise<boolean>;
17
- countByTag(tag: JobTag): Promise<number>;
18
- get(id: string): Promise<Job<T> | undefined>;
19
- getByTag(tag: JobTag): Promise<Job<T>[]>;
20
- getByTags(tags: JobTag[]): Promise<Job<T>[]>;
21
- cancel(id: string): Promise<void>;
22
- cancelMany(ids: string[]): Promise<void>;
23
- cancelByTag(tag: JobTag): Promise<void>;
24
- cancelByTags(tags: JobTag[]): Promise<void>;
25
- dequeue(): Promise<Job<T> | undefined>;
26
- dequeueMany(count: number): Promise<Job<T>[]>;
27
- acknowledge(job: Job<T>): Promise<void>;
28
- acknowledgeMany(jobs: Job<T>[]): Promise<void>;
29
- getConsumer(cancellationSignal: CancellationSignal): AsyncIterableIterator<Job<T>>;
30
- getBatchConsumer(size: number, cancellationSignal: CancellationSignal): AsyncIterableIterator<Job<T>[]>;
25
+ countByTag(tag: TaskTag): Promise<number>;
26
+ get(id: string): Promise<Task<Data, State, Result> | undefined>;
27
+ getByTag(tag: TaskTag): Promise<Task<Data, State, Result>[]>;
28
+ getByTags(tags: TaskTag[]): Promise<Task<Data, State, Result>[]>;
29
+ getTree(idOrIds: string | string[], transaction?: Transaction): Promise<Task<unknown, unknown, unknown>[]>;
30
+ getTreeByQuery(query: Query<Task>, transaction?: Transaction): Promise<Task<unknown, unknown, unknown>[]>;
31
+ cancel(id: string, transaction?: Transaction): Promise<void>;
32
+ cancelMany(ids: string[], transaction?: Transaction): Promise<void>;
33
+ cancelByTag(tag: TaskTag): Promise<void>;
34
+ cancelManyByTag(tags: TaskTag[]): Promise<void>;
35
+ clear(): Promise<void>;
36
+ dequeue(): Promise<Task<Data, State, Result> | undefined>;
37
+ dequeueMany(count: number): Promise<Task<Data, State, Result>[]>;
38
+ reschedule(id: string, timestamp: number, transaction?: Transaction): Promise<void>;
39
+ rescheduleMany(ids: string[], timestamp: number, transaction?: Transaction): Promise<void>;
40
+ rescheduleByTag(tag: TaskTag, timestamp: number, transaction?: Transaction): Promise<void>;
41
+ rescheduleManyByTag(tags: TaskTag[], timestamp: number, transaction?: Transaction): Promise<void>;
42
+ touch(task: Task, options?: {
43
+ progress?: number;
44
+ state?: State;
45
+ transaction?: Transaction;
46
+ }): Promise<Task<Data, State, Result> | undefined>;
47
+ touchMany(tasks: Task[], progresses?: number[], states?: State[], transaction?: Transaction): Promise<string[]>;
48
+ acknowledge<R>(task: Task<any, any, R>, result?: R, transaction?: Transaction, { skipFanIn }?: {
49
+ skipFanIn?: boolean;
50
+ }): Promise<void>;
51
+ acknowledgeMany<R>(tasks: Task<any, any, R>[], results?: R[], transaction?: Transaction): Promise<void>;
52
+ fail(task: Task, error: any, fatal?: boolean, transaction?: Transaction, { skipFanIn }?: {
53
+ skipFanIn?: boolean;
54
+ }): Promise<void>;
55
+ failMany(tasks: Task[], errors: any[], transaction?: Transaction): Promise<void>;
56
+ prune(): Promise<void>;
57
+ restart(id: string, transaction?: Transaction): Promise<void>;
58
+ getConsumer(cancellationSignal: CancellationSignal): AsyncIterableIterator<Task<Data, State, Result>>;
59
+ getBatchConsumer(size: number, cancellationSignal: CancellationSignal): AsyncIterableIterator<Task<Data, State, Result>[]>;
31
60
  }