@tstdl/base 0.93.87 → 0.93.90

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 (314) hide show
  1. package/ai/genkit/helpers.d.ts +3 -1
  2. package/ai/genkit/helpers.js +3 -3
  3. package/api/server/gateway.d.ts +3 -0
  4. package/api/server/gateway.js +15 -4
  5. package/api/server/middlewares/catch-error.middleware.js +2 -4
  6. package/api/server/middlewares/cors.middleware.js +2 -3
  7. package/api/server/middlewares/csrf.middleware.d.ts +41 -0
  8. package/api/server/middlewares/csrf.middleware.js +108 -0
  9. package/api/server/middlewares/index.d.ts +1 -0
  10. package/api/server/middlewares/index.js +1 -0
  11. package/api/server/module.d.ts +8 -2
  12. package/api/server/module.js +14 -8
  13. package/api/server/tests/csrf.middleware.test.js +91 -0
  14. package/audit/drizzle/{0000_bored_stick.sql → 0000_lumpy_thunderball.sql} +3 -3
  15. package/audit/drizzle/meta/0000_snapshot.json +4 -4
  16. package/audit/drizzle/meta/_journal.json +2 -9
  17. package/audit/module.d.ts +4 -1
  18. package/audit/module.js +3 -2
  19. package/audit/schemas.d.ts +1 -1
  20. package/audit/types.d.ts +1 -1
  21. package/audit/types.js +1 -1
  22. package/authentication/client/authentication.service.d.ts +14 -1
  23. package/authentication/client/authentication.service.js +82 -23
  24. package/authentication/client/http-client.middleware.d.ts +6 -0
  25. package/authentication/client/http-client.middleware.js +36 -0
  26. package/authentication/client/module.js +8 -2
  27. package/authentication/models/service-account.model.d.ts +2 -2
  28. package/authentication/models/service-account.model.js +10 -5
  29. package/authentication/models/subject.model.d.ts +20 -5
  30. package/authentication/models/subject.model.js +34 -29
  31. package/authentication/models/system-account.model.d.ts +3 -2
  32. package/authentication/models/system-account.model.js +11 -5
  33. package/authentication/models/user.model.d.ts +2 -11
  34. package/authentication/models/user.model.js +5 -16
  35. package/authentication/server/authentication-api-request-token.provider.d.ts +0 -2
  36. package/authentication/server/authentication-api-request-token.provider.js +3 -11
  37. package/authentication/server/authentication.api-controller.d.ts +1 -2
  38. package/authentication/server/authentication.api-controller.js +8 -9
  39. package/authentication/server/authentication.audit.d.ts +3 -2
  40. package/authentication/server/authentication.service.d.ts +27 -1
  41. package/authentication/server/authentication.service.js +67 -18
  42. package/authentication/server/drizzle/{0000_normal_paper_doll.sql → 0000_soft_tag.sql} +25 -32
  43. package/authentication/server/drizzle/meta/0000_snapshot.json +180 -205
  44. package/authentication/server/drizzle/meta/_journal.json +2 -2
  45. package/authentication/server/helper.js +9 -2
  46. package/authentication/server/module.d.ts +4 -1
  47. package/authentication/server/module.js +9 -5
  48. package/authentication/server/schemas.d.ts +2 -1
  49. package/authentication/server/schemas.js +2 -2
  50. package/authentication/server/subject.service.d.ts +17 -11
  51. package/authentication/server/subject.service.js +86 -84
  52. package/authentication/tests/authentication-ancillary.service.test.d.ts +1 -0
  53. package/authentication/tests/authentication-ancillary.service.test.js +13 -0
  54. package/authentication/tests/authentication-secret-requirements.validator.test.d.ts +1 -0
  55. package/authentication/tests/authentication-secret-requirements.validator.test.js +29 -0
  56. package/authentication/tests/authentication.api-controller.test.d.ts +1 -0
  57. package/authentication/tests/authentication.api-controller.test.js +88 -0
  58. package/authentication/tests/authentication.api-request-token.provider.test.d.ts +1 -0
  59. package/authentication/tests/authentication.api-request-token.provider.test.js +48 -0
  60. package/authentication/tests/authentication.client-middleware.test.d.ts +1 -0
  61. package/authentication/tests/authentication.client-middleware.test.js +23 -0
  62. package/authentication/tests/authentication.client-service.test.d.ts +1 -0
  63. package/authentication/tests/authentication.client-service.test.js +70 -0
  64. package/authentication/tests/authentication.service.test.d.ts +1 -0
  65. package/authentication/tests/authentication.service.test.js +186 -0
  66. package/authentication/tests/authentication.test-ancillary-service.d.ts +9 -0
  67. package/authentication/tests/authentication.test-ancillary-service.js +27 -0
  68. package/authentication/tests/helper.test.d.ts +1 -0
  69. package/authentication/tests/helper.test.js +107 -0
  70. package/authentication/tests/secret-requirements.error.test.d.ts +1 -0
  71. package/authentication/tests/secret-requirements.error.test.js +14 -0
  72. package/authentication/tests/subject.service.test.d.ts +1 -0
  73. package/authentication/tests/subject.service.test.js +140 -0
  74. package/circuit-breaker/postgres/drizzle/meta/0000_snapshot.json +1 -1
  75. package/circuit-breaker/postgres/drizzle/meta/_journal.json +2 -2
  76. package/circuit-breaker/postgres/module.d.ts +7 -1
  77. package/circuit-breaker/postgres/module.js +8 -6
  78. package/circuit-breaker/tests/circuit-breaker.test.js +2 -22
  79. package/document-management/api/document-management.api.js +2 -6
  80. package/document-management/server/services/document-validation.service.js +6 -5
  81. package/document-management/server/services/document-workflow.service.js +5 -5
  82. package/document-management/service-models/document-folders.view-model.d.ts +5 -2
  83. package/document-management/service-models/document-folders.view-model.js +42 -9
  84. package/document-management/service-models/enriched/enriched-document-management-data.view.js +1 -1
  85. package/examples/document-management/main.js +4 -4
  86. package/http/client/adapters/undici.adapter.d.ts +7 -5
  87. package/http/client/adapters/undici.adapter.js +13 -10
  88. package/http/client/module.d.ts +3 -1
  89. package/http/client/module.js +8 -9
  90. package/http/server/http-server.d.ts +2 -0
  91. package/http/server/node/module.d.ts +6 -2
  92. package/http/server/node/module.js +6 -4
  93. package/http/server/node/node-http-server.d.ts +2 -0
  94. package/http/server/node/node-http-server.js +7 -0
  95. package/http/types.d.ts +1 -1
  96. package/key-value-store/postgres/module.d.ts +7 -1
  97. package/key-value-store/postgres/module.js +7 -3
  98. package/lock/postgres/lock.js +0 -1
  99. package/lock/postgres/module.d.ts +7 -1
  100. package/lock/postgres/module.js +9 -5
  101. package/logger/formatter.d.ts +2 -0
  102. package/logger/formatters/json.js +2 -2
  103. package/logger/formatters/pretty-print.js +8 -10
  104. package/logger/logger.d.ts +1 -1
  105. package/logger/logger.js +15 -12
  106. package/message-bus/local/module.d.ts +5 -2
  107. package/message-bus/local/module.js +5 -4
  108. package/module/module.d.ts +2 -1
  109. package/module/module.js +3 -0
  110. package/module/modules/web-server.module.d.ts +11 -6
  111. package/module/modules/web-server.module.js +15 -10
  112. package/orm/decorators.d.ts +24 -1
  113. package/orm/decorators.js +40 -4
  114. package/orm/query/base.d.ts +17 -17
  115. package/orm/query/base.js +1 -1
  116. package/orm/repository.types.d.ts +45 -1
  117. package/orm/schemas/tsvector.js +1 -1
  118. package/orm/server/drizzle/schema-converter.d.ts +3 -1
  119. package/orm/server/drizzle/schema-converter.js +120 -14
  120. package/orm/server/index.d.ts +1 -0
  121. package/orm/server/index.js +1 -0
  122. package/orm/server/module.d.ts +4 -2
  123. package/orm/server/module.js +6 -5
  124. package/orm/server/query-converter.d.ts +6 -3
  125. package/orm/server/query-converter.js +32 -20
  126. package/orm/server/repository-config.d.ts +8 -0
  127. package/orm/server/repository-config.js +8 -0
  128. package/orm/server/repository.d.ts +117 -43
  129. package/orm/server/repository.js +757 -253
  130. package/orm/server/transaction.d.ts +4 -2
  131. package/orm/server/transaction.js +14 -5
  132. package/orm/server/transactional.d.ts +6 -2
  133. package/orm/server/transactional.js +39 -9
  134. package/orm/server/types.d.ts +2 -0
  135. package/orm/sqls/case-when.d.ts +3 -3
  136. package/orm/sqls/case-when.js +2 -2
  137. package/orm/sqls/sqls.d.ts +31 -5
  138. package/orm/sqls/sqls.js +69 -6
  139. package/orm/tests/data-types.test.d.ts +1 -0
  140. package/orm/tests/data-types.test.js +39 -0
  141. package/orm/tests/decorators.test.d.ts +1 -0
  142. package/orm/tests/decorators.test.js +77 -0
  143. package/orm/tests/encryption.test.d.ts +1 -0
  144. package/orm/tests/encryption.test.js +34 -0
  145. package/orm/tests/query-complex.test.d.ts +1 -0
  146. package/orm/tests/query-complex.test.js +203 -0
  147. package/orm/tests/query-converter-complex.test.d.ts +1 -0
  148. package/orm/tests/query-converter-complex.test.js +126 -0
  149. package/orm/tests/query-converter.test.d.ts +1 -0
  150. package/orm/tests/query-converter.test.js +123 -0
  151. package/orm/tests/repository-advanced.test.d.ts +1 -0
  152. package/orm/tests/repository-advanced.test.js +232 -0
  153. package/orm/tests/repository-attributes.test.d.ts +1 -0
  154. package/orm/tests/repository-attributes.test.js +99 -0
  155. package/orm/tests/repository-comprehensive.test.d.ts +1 -0
  156. package/orm/tests/repository-comprehensive.test.js +187 -0
  157. package/orm/tests/repository-coverage.test.d.ts +1 -0
  158. package/orm/tests/repository-coverage.test.js +303 -0
  159. package/orm/tests/repository-cti-complex.test.d.ts +1 -0
  160. package/orm/tests/repository-cti-complex.test.js +170 -0
  161. package/orm/tests/repository-cti-embedded.test.d.ts +1 -0
  162. package/orm/tests/repository-cti-embedded.test.js +188 -0
  163. package/orm/tests/repository-cti-extensive.test.d.ts +1 -0
  164. package/orm/tests/repository-cti-extensive.test.js +308 -0
  165. package/orm/tests/repository-cti-mapping.test.d.ts +1 -0
  166. package/orm/tests/repository-cti-mapping.test.js +121 -0
  167. package/orm/tests/repository-cti-search.test.d.ts +1 -0
  168. package/orm/tests/repository-cti-search.test.js +152 -0
  169. package/orm/tests/repository-cti-soft-delete.test.d.ts +1 -0
  170. package/orm/tests/repository-cti-soft-delete.test.js +115 -0
  171. package/orm/tests/repository-cti-transactions.test.d.ts +1 -0
  172. package/orm/tests/repository-cti-transactions.test.js +126 -0
  173. package/orm/tests/repository-cti-upsert-many.test.d.ts +1 -0
  174. package/orm/tests/repository-cti-upsert-many.test.js +127 -0
  175. package/orm/tests/repository-cti.test.d.ts +1 -0
  176. package/orm/tests/repository-cti.test.js +456 -0
  177. package/orm/tests/repository-edge-cases.test.d.ts +1 -0
  178. package/orm/tests/repository-edge-cases.test.js +216 -0
  179. package/orm/tests/repository-expiration.test.d.ts +1 -0
  180. package/orm/tests/repository-expiration.test.js +153 -0
  181. package/orm/tests/repository-extra-coverage.test.d.ts +1 -0
  182. package/orm/tests/repository-extra-coverage.test.js +546 -0
  183. package/orm/tests/repository-mapping.test.d.ts +1 -0
  184. package/orm/tests/repository-mapping.test.js +71 -0
  185. package/orm/tests/repository-regression.test.d.ts +1 -0
  186. package/orm/tests/repository-regression.test.js +330 -0
  187. package/orm/tests/repository-search-coverage.test.d.ts +1 -0
  188. package/orm/tests/repository-search-coverage.test.js +129 -0
  189. package/orm/tests/repository-search.test.d.ts +1 -0
  190. package/orm/tests/repository-search.test.js +116 -0
  191. package/orm/tests/repository-soft-delete.test.d.ts +1 -0
  192. package/orm/tests/repository-soft-delete.test.js +143 -0
  193. package/orm/tests/repository-transactions-nested.test.d.ts +1 -0
  194. package/orm/tests/repository-transactions-nested.test.js +202 -0
  195. package/orm/tests/repository-types.test.d.ts +1 -0
  196. package/orm/tests/repository-types.test.js +218 -0
  197. package/orm/tests/schema-converter.test.d.ts +1 -0
  198. package/orm/tests/schema-converter.test.js +81 -0
  199. package/orm/tests/schema-generation.test.d.ts +1 -0
  200. package/orm/tests/schema-generation.test.js +127 -0
  201. package/orm/tests/sql-helpers.test.d.ts +1 -0
  202. package/orm/tests/sql-helpers.test.js +67 -0
  203. package/orm/tests/transaction-safety.test.d.ts +1 -0
  204. package/orm/tests/transaction-safety.test.js +81 -0
  205. package/orm/tests/transactional.test.d.ts +1 -0
  206. package/orm/tests/transactional.test.js +224 -0
  207. package/orm/tests/utils.test.d.ts +1 -0
  208. package/orm/tests/utils.test.js +70 -0
  209. package/orm/utils.d.ts +7 -0
  210. package/orm/utils.js +26 -6
  211. package/package.json +12 -7
  212. package/pool/pool.js +1 -1
  213. package/rate-limit/index.d.ts +2 -0
  214. package/rate-limit/index.js +2 -0
  215. package/rate-limit/postgres/drizzle/0000_watery_rage.sql +7 -0
  216. package/{queue → rate-limit}/postgres/drizzle/meta/0000_snapshot.json +14 -39
  217. package/rate-limit/postgres/drizzle/meta/_journal.json +13 -0
  218. package/{queue → rate-limit}/postgres/drizzle.config.js +1 -1
  219. package/rate-limit/postgres/index.d.ts +4 -0
  220. package/rate-limit/postgres/index.js +4 -0
  221. package/rate-limit/postgres/module.d.ts +12 -0
  222. package/rate-limit/postgres/module.js +28 -0
  223. package/rate-limit/postgres/postgres-rate-limiter.d.ts +9 -0
  224. package/rate-limit/postgres/postgres-rate-limiter.js +56 -0
  225. package/rate-limit/postgres/rate-limit.model.d.ts +8 -0
  226. package/rate-limit/postgres/rate-limit.model.js +35 -0
  227. package/rate-limit/postgres/rate-limiter.provider.d.ts +6 -0
  228. package/rate-limit/postgres/rate-limiter.provider.js +21 -0
  229. package/rate-limit/postgres/schemas.d.ts +3 -0
  230. package/rate-limit/postgres/schemas.js +4 -0
  231. package/rate-limit/provider.d.ts +9 -0
  232. package/rate-limit/provider.js +2 -0
  233. package/rate-limit/rate-limiter.d.ts +35 -0
  234. package/rate-limit/rate-limiter.js +3 -0
  235. package/rate-limit/tests/postgres-rate-limiter.test.d.ts +1 -0
  236. package/rate-limit/tests/postgres-rate-limiter.test.js +92 -0
  237. package/signals/implementation/configure.d.ts +3 -0
  238. package/signals/implementation/configure.js +3 -0
  239. package/sse/data-stream-source.d.ts +1 -1
  240. package/sse/data-stream-source.js +6 -6
  241. package/task-queue/enqueue-batch.d.ts +17 -0
  242. package/task-queue/enqueue-batch.js +24 -0
  243. package/{queue → task-queue}/index.d.ts +1 -1
  244. package/{queue → task-queue}/index.js +1 -1
  245. package/task-queue/postgres/drizzle/0000_thin_black_panther.sql +74 -0
  246. package/task-queue/postgres/drizzle/meta/0000_snapshot.json +592 -0
  247. package/task-queue/postgres/drizzle/meta/_journal.json +13 -0
  248. package/task-queue/postgres/drizzle.config.d.ts +2 -0
  249. package/task-queue/postgres/drizzle.config.js +11 -0
  250. package/task-queue/postgres/index.d.ts +4 -0
  251. package/task-queue/postgres/index.js +4 -0
  252. package/task-queue/postgres/module.d.ts +12 -0
  253. package/task-queue/postgres/module.js +28 -0
  254. package/task-queue/postgres/schemas.d.ts +16 -0
  255. package/task-queue/postgres/schemas.js +8 -0
  256. package/task-queue/postgres/task-queue.d.ts +83 -0
  257. package/task-queue/postgres/task-queue.js +1054 -0
  258. package/task-queue/postgres/task-queue.provider.d.ts +7 -0
  259. package/{queue/postgres/queue.provider.js → task-queue/postgres/task-queue.provider.js} +8 -8
  260. package/task-queue/postgres/task.model.d.ts +39 -0
  261. package/task-queue/postgres/task.model.js +178 -0
  262. package/{queue → task-queue}/provider.d.ts +3 -3
  263. package/task-queue/provider.js +2 -0
  264. package/{queue → task-queue}/task-context.d.ts +7 -7
  265. package/{queue → task-queue}/task-context.js +8 -8
  266. package/{queue/queue.d.ts → task-queue/task-queue.d.ts} +128 -59
  267. package/task-queue/task-queue.js +200 -0
  268. package/task-queue/tests/complex.test.d.ts +1 -0
  269. package/task-queue/tests/complex.test.js +299 -0
  270. package/task-queue/tests/dependencies.test.d.ts +1 -0
  271. package/task-queue/tests/dependencies.test.js +174 -0
  272. package/task-queue/tests/queue.test.d.ts +1 -0
  273. package/task-queue/tests/queue.test.js +334 -0
  274. package/task-queue/tests/worker.test.d.ts +1 -0
  275. package/task-queue/tests/worker.test.js +163 -0
  276. package/test1.js +1 -1
  277. package/test4.js +2 -2
  278. package/unit-test/index.d.ts +1 -0
  279. package/unit-test/index.js +1 -0
  280. package/unit-test/integration-setup.d.ts +55 -0
  281. package/unit-test/integration-setup.js +182 -0
  282. package/utils/patterns.d.ts +3 -0
  283. package/utils/patterns.js +6 -1
  284. package/audit/drizzle/0001_previous_network.sql +0 -2
  285. package/audit/drizzle/meta/0001_snapshot.json +0 -195
  286. package/queue/enqueue-batch.d.ts +0 -17
  287. package/queue/enqueue-batch.js +0 -18
  288. package/queue/postgres/drizzle/0000_zippy_moondragon.sql +0 -11
  289. package/queue/postgres/drizzle/0001_certain_wild_pack.sql +0 -2
  290. package/queue/postgres/drizzle/0002_dear_meggan.sql +0 -2
  291. package/queue/postgres/drizzle/0003_tricky_venom.sql +0 -30
  292. package/queue/postgres/drizzle/meta/0001_snapshot.json +0 -103
  293. package/queue/postgres/drizzle/meta/0002_snapshot.json +0 -90
  294. package/queue/postgres/drizzle/meta/0003_snapshot.json +0 -288
  295. package/queue/postgres/drizzle/meta/_journal.json +0 -34
  296. package/queue/postgres/index.d.ts +0 -4
  297. package/queue/postgres/index.js +0 -4
  298. package/queue/postgres/module.d.ts +0 -9
  299. package/queue/postgres/module.js +0 -29
  300. package/queue/postgres/queue.d.ts +0 -60
  301. package/queue/postgres/queue.js +0 -681
  302. package/queue/postgres/queue.provider.d.ts +0 -7
  303. package/queue/postgres/schemas.d.ts +0 -14
  304. package/queue/postgres/schemas.js +0 -6
  305. package/queue/postgres/task.model.d.ts +0 -24
  306. package/queue/postgres/task.model.js +0 -115
  307. package/queue/provider.js +0 -2
  308. package/queue/queue.js +0 -131
  309. package/queue/tests/queue.test.js +0 -623
  310. package/test3.d.ts +0 -1
  311. package/test3.js +0 -47
  312. /package/{queue/tests/queue.test.d.ts → api/server/tests/csrf.middleware.test.d.ts} +0 -0
  313. /package/circuit-breaker/postgres/drizzle/{0000_hard_shocker.sql → 0000_cooing_korath.sql} +0 -0
  314. /package/{queue → rate-limit}/postgres/drizzle.config.d.ts +0 -0
@@ -0,0 +1,7 @@
1
+ import { TaskQueueProvider, type QueueConfig } from '../../task-queue/index.js';
2
+ import type { ObjectLiteral } from '../../types/index.js';
3
+ import { PostgresQueue } from './task-queue.js';
4
+ export declare class PostgresTaskQueueProvider extends TaskQueueProvider {
5
+ #private;
6
+ get<Data extends ObjectLiteral, State extends ObjectLiteral, Result extends ObjectLiteral>(namespace: string, config?: QueueConfig): PostgresQueue<Data, State, Result>;
7
+ }
@@ -7,15 +7,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { Singleton } from '../../injector/decorators.js';
8
8
  import { inject } from '../../injector/inject.js';
9
9
  import { Injector } from '../../injector/injector.js';
10
- import { QueueProvider } from '../../queue/index.js';
11
- import { PostgresQueue } from './queue.js';
12
- let PostgresQueueProvider = class PostgresQueueProvider extends QueueProvider {
10
+ import { TaskQueueProvider } from '../../task-queue/index.js';
11
+ import { PostgresQueue } from './task-queue.js';
12
+ let PostgresTaskQueueProvider = class PostgresTaskQueueProvider extends TaskQueueProvider {
13
13
  #injector = inject(Injector);
14
- get(name, config) {
15
- return this.#injector.resolve((PostgresQueue), { ...config, name: name });
14
+ get(namespace, config) {
15
+ return this.#injector.resolve((PostgresQueue), { ...config, namespace });
16
16
  }
17
17
  };
18
- PostgresQueueProvider = __decorate([
18
+ PostgresTaskQueueProvider = __decorate([
19
19
  Singleton()
20
- ], PostgresQueueProvider);
21
- export { PostgresQueueProvider };
20
+ ], PostgresTaskQueueProvider);
21
+ export { PostgresTaskQueueProvider };
@@ -0,0 +1,39 @@
1
+ import { BaseEntity, type Json, type Timestamp } from '../../orm/index.js';
2
+ import type { ObjectLiteral, TypedOmit } from '../../types/types.js';
3
+ import { DependencyJoinMode, type Task, TaskState } from '../task-queue.js';
4
+ export declare abstract class PostgresTaskBase<Data extends ObjectLiteral = ObjectLiteral, State extends ObjectLiteral = ObjectLiteral, Result extends ObjectLiteral = ObjectLiteral> extends BaseEntity implements TypedOmit<Task<Data, State, Result>, 'parentId'> {
5
+ namespace: string;
6
+ type: string;
7
+ status: TaskState;
8
+ idempotencyKey: string | null;
9
+ traceId: string | null;
10
+ tags: string[];
11
+ completeAfterTags: string[];
12
+ scheduleAfterTags: string[];
13
+ failFast: boolean;
14
+ dependencyJoinMode: DependencyJoinMode;
15
+ dependencyTriggerStates: TaskState[];
16
+ priority: number;
17
+ token: string | null;
18
+ creationTimestamp: Timestamp;
19
+ priorityAgeTimestamp: Timestamp;
20
+ scheduleTimestamp: Timestamp;
21
+ startTimestamp: Timestamp | null;
22
+ timeToLive: Timestamp | null;
23
+ visibilityDeadline: Timestamp | null;
24
+ completeTimestamp: Timestamp | null;
25
+ tries: number;
26
+ progress: number;
27
+ data: Json<Data> | null;
28
+ state: Json<State> | null;
29
+ result: Json<Result> | null;
30
+ error: Json<ObjectLiteral> | null;
31
+ }
32
+ export declare class PostgresTask<Data extends ObjectLiteral = ObjectLiteral, State extends ObjectLiteral = ObjectLiteral, Result extends ObjectLiteral = ObjectLiteral> extends PostgresTaskBase<Data, State, Result> implements Task<Data, State, Result> {
33
+ static readonly entityName = "Task";
34
+ parentId: string | null;
35
+ }
36
+ export declare class PostgresTaskArchive<Data extends ObjectLiteral = ObjectLiteral, State extends ObjectLiteral = ObjectLiteral, Result extends ObjectLiteral = ObjectLiteral> extends PostgresTaskBase<Data, State, Result> implements PostgresTask<Data, State, Result> {
37
+ static readonly entityName = "TaskArchive";
38
+ parentId: string | null;
39
+ }
@@ -0,0 +1,178 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { BaseEntity, Index, JsonProperty, Reference, Table, TimestampProperty, Unique, UuidProperty } from '../../orm/index.js';
11
+ import { Array as ArrayProperty, BooleanProperty, Enumeration, Integer, NumberProperty, StringProperty } from '../../schema/index.js';
12
+ import { DependencyJoinMode, TaskState } from '../task-queue.js';
13
+ export class PostgresTaskBase extends BaseEntity {
14
+ namespace;
15
+ type;
16
+ status;
17
+ idempotencyKey;
18
+ traceId;
19
+ tags;
20
+ completeAfterTags;
21
+ scheduleAfterTags;
22
+ failFast;
23
+ dependencyJoinMode;
24
+ dependencyTriggerStates;
25
+ priority;
26
+ token;
27
+ creationTimestamp;
28
+ priorityAgeTimestamp;
29
+ scheduleTimestamp;
30
+ startTimestamp;
31
+ timeToLive;
32
+ visibilityDeadline;
33
+ completeTimestamp;
34
+ tries;
35
+ progress;
36
+ data;
37
+ state;
38
+ result;
39
+ error;
40
+ }
41
+ __decorate([
42
+ StringProperty(),
43
+ __metadata("design:type", String)
44
+ ], PostgresTaskBase.prototype, "namespace", void 0);
45
+ __decorate([
46
+ StringProperty(),
47
+ __metadata("design:type", String)
48
+ ], PostgresTaskBase.prototype, "type", void 0);
49
+ __decorate([
50
+ Enumeration(TaskState),
51
+ __metadata("design:type", String)
52
+ ], PostgresTaskBase.prototype, "status", void 0);
53
+ __decorate([
54
+ StringProperty({ nullable: true }),
55
+ __metadata("design:type", Object)
56
+ ], PostgresTaskBase.prototype, "idempotencyKey", void 0);
57
+ __decorate([
58
+ StringProperty({ nullable: true }),
59
+ __metadata("design:type", Object)
60
+ ], PostgresTaskBase.prototype, "traceId", void 0);
61
+ __decorate([
62
+ ArrayProperty(String),
63
+ __metadata("design:type", Array)
64
+ ], PostgresTaskBase.prototype, "tags", void 0);
65
+ __decorate([
66
+ ArrayProperty(String),
67
+ __metadata("design:type", Array)
68
+ ], PostgresTaskBase.prototype, "completeAfterTags", void 0);
69
+ __decorate([
70
+ ArrayProperty(String),
71
+ __metadata("design:type", Array)
72
+ ], PostgresTaskBase.prototype, "scheduleAfterTags", void 0);
73
+ __decorate([
74
+ BooleanProperty(),
75
+ __metadata("design:type", Boolean)
76
+ ], PostgresTaskBase.prototype, "failFast", void 0);
77
+ __decorate([
78
+ Enumeration(DependencyJoinMode),
79
+ __metadata("design:type", String)
80
+ ], PostgresTaskBase.prototype, "dependencyJoinMode", void 0);
81
+ __decorate([
82
+ Enumeration(TaskState, { array: true }),
83
+ __metadata("design:type", Array)
84
+ ], PostgresTaskBase.prototype, "dependencyTriggerStates", void 0);
85
+ __decorate([
86
+ Integer(),
87
+ __metadata("design:type", Number)
88
+ ], PostgresTaskBase.prototype, "priority", void 0);
89
+ __decorate([
90
+ UuidProperty({ nullable: true }),
91
+ __metadata("design:type", Object)
92
+ ], PostgresTaskBase.prototype, "token", void 0);
93
+ __decorate([
94
+ TimestampProperty(),
95
+ __metadata("design:type", Number)
96
+ ], PostgresTaskBase.prototype, "creationTimestamp", void 0);
97
+ __decorate([
98
+ TimestampProperty(),
99
+ __metadata("design:type", Number)
100
+ ], PostgresTaskBase.prototype, "priorityAgeTimestamp", void 0);
101
+ __decorate([
102
+ TimestampProperty(),
103
+ __metadata("design:type", Number)
104
+ ], PostgresTaskBase.prototype, "scheduleTimestamp", void 0);
105
+ __decorate([
106
+ TimestampProperty({ nullable: true }),
107
+ __metadata("design:type", Object)
108
+ ], PostgresTaskBase.prototype, "startTimestamp", void 0);
109
+ __decorate([
110
+ TimestampProperty({ nullable: true }),
111
+ __metadata("design:type", Object)
112
+ ], PostgresTaskBase.prototype, "timeToLive", void 0);
113
+ __decorate([
114
+ TimestampProperty({ nullable: true }),
115
+ __metadata("design:type", Object)
116
+ ], PostgresTaskBase.prototype, "visibilityDeadline", void 0);
117
+ __decorate([
118
+ TimestampProperty({ nullable: true }),
119
+ __metadata("design:type", Object)
120
+ ], PostgresTaskBase.prototype, "completeTimestamp", void 0);
121
+ __decorate([
122
+ Integer(),
123
+ __metadata("design:type", Number)
124
+ ], PostgresTaskBase.prototype, "tries", void 0);
125
+ __decorate([
126
+ NumberProperty(),
127
+ __metadata("design:type", Number)
128
+ ], PostgresTaskBase.prototype, "progress", void 0);
129
+ __decorate([
130
+ JsonProperty({ nullable: true }),
131
+ __metadata("design:type", Object)
132
+ ], PostgresTaskBase.prototype, "data", void 0);
133
+ __decorate([
134
+ JsonProperty({ nullable: true }),
135
+ __metadata("design:type", Object)
136
+ ], PostgresTaskBase.prototype, "state", void 0);
137
+ __decorate([
138
+ JsonProperty({ nullable: true }),
139
+ __metadata("design:type", Object)
140
+ ], PostgresTaskBase.prototype, "result", void 0);
141
+ __decorate([
142
+ JsonProperty({ nullable: true }),
143
+ __metadata("design:type", Object)
144
+ ], PostgresTaskBase.prototype, "error", void 0);
145
+ let PostgresTask = class PostgresTask extends PostgresTaskBase {
146
+ static entityName = 'Task';
147
+ parentId;
148
+ };
149
+ __decorate([
150
+ Reference(() => PostgresTask),
151
+ UuidProperty({ nullable: true }),
152
+ __metadata("design:type", Object)
153
+ ], PostgresTask.prototype, "parentId", void 0);
154
+ PostgresTask = __decorate([
155
+ Table('task', { schema: 'task_queue' }),
156
+ Unique(['namespace', 'idempotencyKey']),
157
+ Index(['namespace', 'status', 'scheduleTimestamp', 'priority']),
158
+ Index(['tags'], { using: 'gin' }),
159
+ Index(['completeAfterTags'], { using: 'gin' }),
160
+ Index(['scheduleAfterTags'], { using: 'gin' }),
161
+ Index(['status', 'completeTimestamp']),
162
+ Index(['status', 'visibilityDeadline']),
163
+ Index(['parentId'])
164
+ ], PostgresTask);
165
+ export { PostgresTask };
166
+ let PostgresTaskArchive = class PostgresTaskArchive extends PostgresTaskBase {
167
+ static entityName = 'TaskArchive';
168
+ parentId;
169
+ };
170
+ __decorate([
171
+ UuidProperty({ nullable: true }),
172
+ __metadata("design:type", Object)
173
+ ], PostgresTaskArchive.prototype, "parentId", void 0);
174
+ PostgresTaskArchive = __decorate([
175
+ Table('task_archive', { schema: 'task_queue' }),
176
+ Index(['namespace', 'completeTimestamp'])
177
+ ], PostgresTaskArchive);
178
+ export { PostgresTaskArchive };
@@ -1,5 +1,5 @@
1
1
  import type { ObjectLiteral } from '../types/index.js';
2
- import type { Queue, QueueConfig } from './queue.js';
3
- export declare abstract class QueueProvider {
4
- abstract get<Data extends ObjectLiteral, State extends ObjectLiteral, Result extends ObjectLiteral>(key: string, config?: QueueConfig): Queue<Data, State, Result>;
2
+ import type { TaskQueue, QueueConfig } from './task-queue.js';
3
+ export declare abstract class TaskQueueProvider {
4
+ abstract get<Data extends ObjectLiteral, State extends ObjectLiteral, Result extends ObjectLiteral>(key: string, config?: QueueConfig): TaskQueue<Data, State, Result>;
5
5
  }
@@ -0,0 +1,2 @@
1
+ export class TaskQueueProvider {
2
+ }
@@ -1,25 +1,25 @@
1
1
  import type { CancellationSignal, CancellationToken } from '../cancellation/index.js';
2
2
  import type { Logger } from '../logger/index.js';
3
3
  import type { Transaction } from '../orm/server/index.js';
4
- import { type EnqueueManyItem, type EnqueueOptions, Queue, type Task } from './queue.js';
4
+ import { type EnqueueManyItem, type EnqueueOptions, TaskQueue, type Task } from './task-queue.js';
5
5
  export declare class TaskContext<Data, State = unknown, Result = unknown> {
6
6
  #private;
7
- constructor(queue: Queue<Data, State, Result>, task: Task<Data, State, Result>, signal: CancellationToken, logger: Logger);
7
+ constructor(queue: TaskQueue<Data, State, Result>, task: Task<Data, State, Result>, signal: CancellationToken, logger: Logger);
8
8
  get id(): string;
9
9
  get data(): Data;
10
10
  get attempt(): number;
11
11
  get triesLeft(): number;
12
12
  get signal(): CancellationSignal;
13
13
  get logger(): Logger;
14
- acknowledge(result?: Result, transaction?: Transaction): Promise<void>;
14
+ complete(result?: Result, transaction?: Transaction): Promise<void>;
15
15
  checkpoint(options: {
16
16
  progress?: number;
17
17
  state?: State;
18
18
  }): Promise<void>;
19
- spawn(data: Data, options?: Omit<EnqueueOptions, 'parentId'>): Promise<Task<Data, State, Result>>;
20
- spawn<D, S, R>(queue: Queue<D, S, R>, data: D, options?: Omit<EnqueueOptions, 'parentId'>): Promise<Task<D, S, R>>;
19
+ spawn(type: string, data: Data, options?: Omit<EnqueueOptions, 'parentId'>): Promise<Task<Data, State, Result>>;
20
+ spawn<D, S, R>(queue: TaskQueue<D, S, R>, type: string, data: D, options?: Omit<EnqueueOptions, 'parentId'>): Promise<Task<D, S, R>>;
21
21
  spawnMany(items: EnqueueManyItem<Data>[]): Promise<Task<Data, State, Result>[]>;
22
- spawnMany<D = Data, S = any, R = any>(queue: Queue<D, S, R>, items: EnqueueManyItem<D>[]): Promise<Task<D, S, R>[]>;
22
+ spawnMany<D = Data, S = any, R = any>(queue: TaskQueue<D, S, R>, items: EnqueueManyItem<D>[]): Promise<Task<D, S, R>[]>;
23
23
  /** Stop execution and reschedule the task for later without incrementing tries if possible */
24
24
  reschedule(timestamp: number): Promise<void>;
25
25
  reschedule(options: {
@@ -29,7 +29,7 @@ export declare class TaskContext<Data, State = unknown, Result = unknown> {
29
29
  }
30
30
  export declare class BatchTaskContext<Data, State, Result> {
31
31
  #private;
32
- constructor(queue: Queue<Data, State, Result>, tasks: Task<Data, State, Result>[], signal: CancellationToken, logger: Logger);
32
+ constructor(queue: TaskQueue<Data, State, Result>, tasks: Task<Data, State, Result>[], signal: CancellationToken, logger: Logger);
33
33
  get tasks(): Task<Data, State, Result>[];
34
34
  get signal(): CancellationSignal;
35
35
  get logger(): Logger;
@@ -1,6 +1,6 @@
1
1
  import { currentTimestamp } from '../utils/date-time.js';
2
2
  import { isInstanceOf, isNumber, isUndefined } from '../utils/type-guards.js';
3
- import { Queue } from './queue.js';
3
+ import { TaskQueue } from './task-queue.js';
4
4
  export class TaskContext {
5
5
  #queue;
6
6
  #logger;
@@ -30,8 +30,8 @@ export class TaskContext {
30
30
  get logger() {
31
31
  return this.#logger;
32
32
  }
33
- async acknowledge(result, transaction) {
34
- await this.#queue.acknowledge(this.#task, result, transaction);
33
+ async complete(result, transaction) {
34
+ await this.#queue.complete(this.#task, result, transaction);
35
35
  }
36
36
  async checkpoint(options) {
37
37
  const updatedTask = await this.#queue.touch(this.#task, options);
@@ -43,14 +43,14 @@ export class TaskContext {
43
43
  this.#task = updatedTask;
44
44
  }
45
45
  }
46
- async spawn(queueOrData, dataOrOptionsOrNothing, optionsOrNothing) {
47
- if (isInstanceOf(queueOrData, Queue)) {
48
- return await queueOrData.enqueue(dataOrOptionsOrNothing, { ...optionsOrNothing, parentId: this.#task.id });
46
+ async spawn(queueOrType, typeOrData, dataOrOptionsOrNothing, optionsOrNothing) {
47
+ if (isInstanceOf(queueOrType, TaskQueue)) {
48
+ return await queueOrType.enqueue(typeOrData, dataOrOptionsOrNothing, { ...optionsOrNothing, parentId: this.#task.id });
49
49
  }
50
- return await this.#queue.enqueue(queueOrData, { ...dataOrOptionsOrNothing, parentId: this.#task.id });
50
+ return await this.#queue.enqueue(queueOrType, typeOrData, { ...dataOrOptionsOrNothing, parentId: this.#task.id });
51
51
  }
52
52
  async spawnMany(queueOrItems, itemsOrNothing) {
53
- const isForOtherQueue = isInstanceOf(queueOrItems, Queue);
53
+ const isForOtherQueue = isInstanceOf(queueOrItems, TaskQueue);
54
54
  const items = (isForOtherQueue ? itemsOrNothing : queueOrItems).map((item) => ({ ...item, parentId: this.#task.id }));
55
55
  if (isForOtherQueue) {
56
56
  return await queueOrItems.enqueueMany(items, { returnTasks: true });
@@ -1,26 +1,45 @@
1
1
  import type { CancellationSignal } from '../cancellation/token.js';
2
2
  import { type EnumType } from '../enumeration/enumeration.js';
3
3
  import type { Resolvable, resolveArgumentType } from '../injector/interfaces.js';
4
- import type { Logger } from '../logger/logger.js';
4
+ import { Logger } from '../logger/logger.js';
5
5
  import type { Transaction } from '../orm/server/transaction.js';
6
- import type { UndefinableJson } from '../types/types.js';
7
- import { QueueEnqueueBatch } from './enqueue-batch.js';
6
+ import { Transactional } from '../orm/server/transactional.js';
7
+ import type { OneOrMany, UndefinableJson } from '../types/types.js';
8
+ import { TaskQueueEnqueueBatch } from './enqueue-batch.js';
8
9
  import { BatchTaskContext, type TaskContext } from './task-context.js';
10
+ type TaskResultPayload<Result> = {
11
+ action: 'complete';
12
+ result: Result | undefined;
13
+ } | {
14
+ action: 'fail';
15
+ error: any;
16
+ fatal: boolean;
17
+ } | {
18
+ action: 'reschedule';
19
+ timestamp: number;
20
+ };
21
+ export declare class TaskResult<Result = unknown> {
22
+ readonly payload: TaskResultPayload<Result>;
23
+ private constructor();
24
+ static Complete<Result>(result?: Result): TaskResult<Result>;
25
+ static Fail(error: any, fatal?: boolean): TaskResult;
26
+ static RescheduleTo(timestamp: number): TaskResult;
27
+ static RescheduleBy(milliseconds: number): TaskResult;
28
+ }
9
29
  export interface ProcessWorker<Data, State, Result> {
10
30
  /**
11
31
  * A worker function that processes a single task.
12
32
  * @param context The task context providing data, logger, and orchestration helpers.
13
33
  */
14
- (context: TaskContext<Data, State, Result>): void | Result | Promise<void | Result>;
34
+ (context: TaskContext<Data, State, Result>): TaskResult<Result> | Promise<TaskResult<Result>>;
15
35
  }
16
36
  export interface ProcessBatchWorker<Data, State, Result> {
17
37
  /**
18
38
  * A worker function that processes a batch of tasks.
19
39
  * @param context The batch context providing tasks and helpers.
20
40
  */
21
- (context: BatchTaskContext<Data, State, Result>): void | Result[] | Promise<void | Result[]>;
41
+ (context: BatchTaskContext<Data, State, Result>): TaskResult<Result>[] | Promise<TaskResult<Result>[]>;
22
42
  }
23
- export type TaskTag = string | null;
24
43
  export declare const TaskState: {
25
44
  /**
26
45
  * The task is waiting to be processed.
@@ -48,21 +67,35 @@ export declare const TaskState: {
48
67
  readonly Dead: "dead";
49
68
  };
50
69
  export type TaskState = EnumType<typeof TaskState>;
70
+ export declare const DependencyJoinMode: {
71
+ readonly And: "and";
72
+ readonly Or: "or";
73
+ };
74
+ export type DependencyJoinMode = EnumType<typeof DependencyJoinMode>;
51
75
  export type Task<Data = unknown, State = unknown, Result = unknown> = {
52
76
  id: string;
53
- queue: string;
77
+ namespace: string;
78
+ type: string;
54
79
  status: TaskState;
55
- lease: string | null;
80
+ token: string | null;
56
81
  /**
57
82
  * The lower the number, the higher the priority.
58
83
  * @default 1000
59
84
  */
60
85
  priority: number;
61
- tag: TaskTag;
62
- data: Data;
86
+ idempotencyKey: string | null;
87
+ traceId: string | null;
88
+ tags: string[];
89
+ completeAfterTags: string[];
90
+ scheduleAfterTags: string[];
91
+ failFast: boolean;
92
+ dependencyJoinMode: DependencyJoinMode;
93
+ dependencyTriggerStates: TaskState[];
94
+ data: Data | null;
63
95
  parentId: string | null;
64
96
  tries: number;
65
- enqueueTimestamp: number;
97
+ creationTimestamp: number;
98
+ priorityAgeTimestamp: number;
66
99
  scheduleTimestamp: number;
67
100
  /**
68
101
  * Timestamp when the task most recently switched to Running state.
@@ -73,8 +106,11 @@ export type Task<Data = unknown, State = unknown, Result = unknown> = {
73
106
  * Timestamp after which the task is considered expired if it hasn't started Running.
74
107
  * If null, the task never expires in the queue.
75
108
  */
76
- expirationTimestamp: number | null;
77
- lockExpirationTimestamp: number | null;
109
+ timeToLive: number | null;
110
+ /**
111
+ * Token expiration (Soft Timeout).
112
+ */
113
+ visibilityDeadline: number | null;
78
114
  completeTimestamp: number | null;
79
115
  /** A number between 0 and 1 indicating the progress of the task. */
80
116
  progress: number;
@@ -84,46 +120,47 @@ export type Task<Data = unknown, State = unknown, Result = unknown> = {
84
120
  error: UndefinableJson | null;
85
121
  };
86
122
  export declare const defaultTaskPriority = 1000;
87
- export declare const UniqueTagStrategy: {
88
- readonly KeepOld: 0;
89
- readonly TakeNew: 1;
90
- };
91
- export type UniqueTagStrategy = EnumType<typeof UniqueTagStrategy>;
92
123
  export type EnqueueOptions = {
93
- tag?: TaskTag;
94
124
  priority?: number;
95
125
  parentId?: string;
126
+ idempotencyKey?: string;
127
+ replace?: boolean;
128
+ tags?: string[];
129
+ completeAfterTags?: string[];
130
+ scheduleAfterTags?: string[];
131
+ failFast?: boolean;
132
+ dependencyJoinMode?: DependencyJoinMode;
133
+ dependencyTriggerStates?: TaskState[];
96
134
  scheduleTimestamp?: number;
97
- expirationTimestamp?: number;
135
+ timeToLive?: number;
98
136
  transaction?: Transaction;
99
137
  };
100
- export type EnqueueOneOptions = EnqueueOptions & {
101
- uniqueTag?: UniqueTagStrategy;
102
- };
138
+ export type EnqueueOneOptions = EnqueueOptions;
103
139
  export type EnqueueManyItem<T> = EnqueueOptions & {
140
+ type: string;
104
141
  data: T;
105
142
  };
106
143
  export type EnqueueManyOptions = {
107
- uniqueTag?: UniqueTagStrategy;
144
+ replace?: boolean;
108
145
  returnTasks?: boolean;
109
146
  transaction?: Transaction;
110
147
  };
111
148
  export type QueueConfig = {
112
149
  /**
113
- * Duration in ms for the worker lease. The worker must heartbeat within this window.
150
+ * Duration (ms) before a worker token is considered lost.
151
+ * Corresponds to $$VisibilityTimeout$$
114
152
  */
115
- processTimeout?: number;
153
+ visibilityTimeout?: number;
116
154
  /**
117
- * Maximum duration a task is allowed to run (in ms) before being forcefully killed.
118
- * This protects against infinite loops even if the worker keeps heartbeating.
155
+ * Hard limit for Running state (ms).
156
+ * Corresponds to $$MaxExecutionTime$$
119
157
  * **WARN:** CancellationSignal must still be observed by the worker!
120
- * Default: 15 minutes
121
158
  */
122
- executionTimeout?: number;
123
- /** Maximum number of attempts to process a task before marking it as failed. Default 3 */
159
+ maxExecutionTime?: number;
160
+ /** Maximum number of attempts allowed. Default 3 */
124
161
  maxTries?: number;
125
- /** Milliseconds to keep completed tasks */
126
- retentionPeriod?: number;
162
+ /** Duration to retain terminal tasks before archival. Default: 30 days */
163
+ retention?: number;
127
164
  /** Maximum number of running tasks across all workers (`null` = unlimited) */
128
165
  globalConcurrency?: number | null;
129
166
  /** Number of consecutive failures before tripping the circuit breaker */
@@ -136,17 +173,35 @@ export type QueueConfig = {
136
173
  retryDelayMaximum?: number;
137
174
  /** Base for exponential backoff (delay = min * (base ^ tries)). Default: 2 */
138
175
  retryDelayGrowth?: number;
176
+ /** Milliseconds to retain archived tasks. Default: 30 days */
177
+ archiveRetention?: number;
178
+ /** Age at which a task's priority is promoted (ms). Default: 1 minute */
179
+ priorityAgingInterval?: number;
180
+ /** Amount to decrement priority on each aging interval. Default: 10 */
181
+ priorityAgingStep?: number;
182
+ /** Default duration for timeToLive (ms). Default: 1 day */
183
+ defaultTimeToLive?: number;
184
+ /** Token bucket size for rate limiting. Default: 100 */
185
+ rateLimit?: number;
186
+ /** Token bucket interval ms for rate limiting. Default: 1000 */
187
+ rateInterval?: number;
188
+ /** Time to retain idempotency keys (ms). Default: 1 hour */
189
+ idempotencyWindow?: number;
139
190
  };
140
- export type QueueArgument = string | (QueueConfig & {
141
- name: string;
191
+ export type TaskQueueArgument = string | (QueueConfig & {
192
+ namespace: string;
142
193
  });
143
194
  export declare const defaultQueueConfig: Required<QueueConfig>;
144
- export declare abstract class Queue<Data, State = unknown, Result = unknown> implements Resolvable<QueueArgument> {
145
- readonly [resolveArgumentType]: QueueArgument;
146
- abstract readonly processTimeout: number;
195
+ export declare abstract class TaskQueue<Data, State = unknown, Result = unknown> extends Transactional implements Resolvable<TaskQueueArgument> {
196
+ readonly [resolveArgumentType]: TaskQueueArgument;
197
+ protected readonly config: QueueConfig & {
198
+ namespace: string;
199
+ };
200
+ protected readonly logger: Logger;
201
+ abstract readonly visibilityTimeout: number;
147
202
  abstract readonly maxTries: number;
148
- batch(): QueueEnqueueBatch<Data, State, Result>;
149
- abstract enqueue(data: Data, options?: EnqueueOneOptions): Promise<Task<Data, State, Result>>;
203
+ batch(): TaskQueueEnqueueBatch<Data, State, Result>;
204
+ abstract enqueue(type: string, data: Data, options?: EnqueueOneOptions): Promise<Task<Data, State, Result>>;
150
205
  abstract enqueueMany(items: EnqueueManyItem<Data>[], options?: EnqueueManyOptions & {
151
206
  returnTasks?: false;
152
207
  }): Promise<void>;
@@ -155,27 +210,27 @@ export declare abstract class Queue<Data, State = unknown, Result = unknown> imp
155
210
  }): Promise<Task<Data, State, Result>[]>;
156
211
  abstract enqueueMany(items: EnqueueManyItem<Data>[], options?: EnqueueManyOptions): Promise<Task<Data, State, Result>[] | undefined>;
157
212
  abstract has(id: string): Promise<boolean>;
158
- abstract get(id: string): Promise<Task<Data, State, Result> | undefined>;
159
- abstract getByTag(tag: TaskTag): Promise<Task<Data, State, Result>[]>;
160
- abstract getByTags(tags: TaskTag[]): Promise<Task<Data, State, Result>[]>;
161
- abstract countByTag(tag: TaskTag): Promise<number>;
213
+ abstract getTask(id: string): Promise<Task<Data, State, Result> | undefined>;
214
+ abstract getManyByTags(tags: OneOrMany<string>): Promise<Task<Data, State, Result>[]>;
215
+ abstract countByTags(tags: OneOrMany<string>): Promise<number>;
162
216
  abstract getTree(rootId: string | string[]): Promise<Task<unknown, unknown, unknown>[]>;
163
217
  abstract cancel(id: string): Promise<void>;
164
218
  abstract cancelMany(ids: string[]): Promise<void>;
165
- abstract cancelByTag(tag: TaskTag): Promise<void>;
166
- abstract cancelManyByTag(tags: TaskTag[]): Promise<void>;
219
+ abstract cancelManyByTags(tags: OneOrMany<string>): Promise<void>;
167
220
  /** Clears all tasks from the queue. Use with caution! */
168
221
  abstract clear(): Promise<void>;
169
222
  abstract dequeue(): Promise<Task<Data, State, Result> | undefined>;
170
- abstract dequeueMany(count: number): Promise<Task<Data, State, Result>[]>;
223
+ abstract dequeueMany(count: number, options?: {
224
+ forceDequeue?: boolean;
225
+ types?: string[];
226
+ }): Promise<Task<Data, State, Result>[]>;
171
227
  /**
172
228
  * Reschedules a task to run at a specific time.
173
229
  * NOTE: If the task is currently running, its retry count is decremented (refunded) so this attempt doesn't count against maxTries.
174
230
  */
175
231
  abstract reschedule(id: string, timestamp: number, transaction?: Transaction): Promise<void>;
176
232
  abstract rescheduleMany(ids: string[], timestamp: number, transaction?: Transaction): Promise<void>;
177
- abstract rescheduleByTag(tag: TaskTag, timestamp: number, transaction?: Transaction): Promise<void>;
178
- abstract rescheduleManyByTag(tags: TaskTag[], timestamp: number, transaction?: Transaction): Promise<void>;
233
+ abstract rescheduleManyByTags(tags: OneOrMany<string>, timestamp: number, transaction?: Transaction): Promise<void>;
179
234
  /**
180
235
  * Updates task progress, state and lock.
181
236
  * Returns the updated task if successful, `undefined` if task is lost/cancelled/timed out.
@@ -190,23 +245,37 @@ export declare abstract class Queue<Data, State = unknown, Result = unknown> imp
190
245
  * Returns the IDs of the successfully updated tasks.
191
246
  */
192
247
  abstract touchMany(tasks: Task[], progresses?: number[], states?: State[], transaction?: Transaction): Promise<string[]>;
193
- abstract acknowledge<R>(task: Task<any, any, R>, result?: R, transaction?: Transaction): Promise<void>;
194
- abstract acknowledgeMany<R>(tasks: Task<any, any, R>[], results?: R[], transaction?: Transaction): Promise<void>;
248
+ abstract complete<R>(task: Task<any, any, R>, result?: R, transaction?: Transaction): Promise<void>;
249
+ abstract completeMany<R>(tasks: Task<any, any, R>[], results?: R[], transaction?: Transaction): Promise<void>;
195
250
  abstract fail(task: Task, error: any, fatal?: boolean, transaction?: Transaction): Promise<void>;
196
251
  abstract failMany(tasks: Task[], error: any, transaction?: Transaction): Promise<void>;
197
- abstract prune(): Promise<void>;
198
- abstract restart(id: string, transaction?: Transaction): Promise<void>;
199
- abstract getConsumer(cancellationSignal: CancellationSignal): AsyncIterableIterator<Task<Data, State, Result>>;
200
- abstract getBatchConsumer(size: number, cancellationSignal: CancellationSignal): AsyncIterableIterator<Task<Data, State, Result>[]>;
201
- process({ concurrency, cancellationSignal }: {
252
+ abstract maintenance(): Promise<void>;
253
+ abstract restart(id: string, options?: {
254
+ resetState?: boolean;
255
+ transaction?: Transaction;
256
+ }): Promise<void>;
257
+ abstract getConsumer(cancellationSignal: CancellationSignal, options?: {
258
+ forceDequeue?: boolean;
259
+ types?: string[];
260
+ }): AsyncIterableIterator<Task<Data, State, Result>>;
261
+ abstract getBatchConsumer(size: number, cancellationSignal: CancellationSignal, options?: {
262
+ forceDequeue?: boolean;
263
+ types?: string[];
264
+ }): AsyncIterableIterator<Task<Data, State, Result>[]>;
265
+ process({ concurrency, cancellationSignal, types, forceDequeue }: {
202
266
  concurrency?: number;
203
267
  cancellationSignal: CancellationSignal;
204
- }, handler: ProcessWorker<Data, State, Result>, logger: Logger): void;
205
- processBatch({ batchSize, concurrency, cancellationSignal }: {
268
+ types?: string[];
269
+ forceDequeue?: boolean;
270
+ }, handler: ProcessWorker<Data, State, Result>): void;
271
+ processBatch({ batchSize, concurrency, cancellationSignal, types, forceDequeue }: {
206
272
  batchSize?: number;
207
273
  concurrency?: number;
208
274
  cancellationSignal: CancellationSignal;
209
- }, handler: ProcessBatchWorker<Data, State, Result>, logger: Logger): void;
275
+ types?: string[];
276
+ forceDequeue?: boolean;
277
+ }, handler: ProcessBatchWorker<Data, State, Result>): void;
210
278
  private processWorker;
211
279
  private processBatchWorker;
212
280
  }
281
+ export {};