@tstdl/base 0.92.167 → 0.92.168

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 (307) hide show
  1. package/application/application.d.ts +12 -18
  2. package/application/application.js +48 -69
  3. package/application/index.d.ts +1 -5
  4. package/application/index.js +1 -5
  5. package/application/providers.d.ts +10 -0
  6. package/application/providers.js +54 -0
  7. package/authentication/client/authentication.service.d.ts +1 -3
  8. package/authentication/client/authentication.service.js +4 -5
  9. package/browser/browser-context-controller.d.ts +2 -4
  10. package/browser/browser-context-controller.js +5 -6
  11. package/browser/browser-controller.d.ts +2 -4
  12. package/browser/browser-controller.js +3 -4
  13. package/browser/browser.service.d.ts +1 -3
  14. package/browser/browser.service.js +1 -2
  15. package/browser/page-controller.d.ts +2 -4
  16. package/browser/page-controller.js +7 -8
  17. package/browser/utils.js +3 -3
  18. package/cancellation/token.d.ts +104 -41
  19. package/cancellation/token.js +125 -54
  20. package/core.d.ts +1 -13
  21. package/core.js +1 -46
  22. package/disposable/disposable.d.ts +0 -8
  23. package/disposable/disposable.js +1 -3
  24. package/disposable/index.d.ts +0 -6
  25. package/disposable/index.js +0 -6
  26. package/disposable/using.d.ts +0 -1
  27. package/disposable/using.js +2 -3
  28. package/distributed-loop/distributed-loop.js +2 -2
  29. package/errors/utils.js +4 -1
  30. package/examples/api/authentication.js +11 -5
  31. package/examples/api/basic-overview.js +17 -12
  32. package/examples/api/custom-authentication.js +13 -7
  33. package/examples/api/streaming.js +15 -12
  34. package/examples/browser/basic.js +6 -3
  35. package/examples/document-management/main.js +6 -3
  36. package/examples/http/client.js +7 -3
  37. package/examples/mail/basic.js +9 -7
  38. package/examples/pdf/basic.js +8 -6
  39. package/examples/template/basic.js +7 -5
  40. package/http/client/http-client-request.d.ts +1 -2
  41. package/http/client/http-client-request.js +1 -2
  42. package/http/server/http-server.d.ts +1 -3
  43. package/http/server/http-server.js +0 -1
  44. package/http/server/node/node-http-server.d.ts +1 -2
  45. package/http/server/node/node-http-server.js +1 -2
  46. package/import.js +1 -1
  47. package/injector/injector.d.ts +1 -1
  48. package/injector/types.d.ts +3 -4
  49. package/lock/lock.d.ts +40 -21
  50. package/lock/lock.js +74 -1
  51. package/lock/postgres/drizzle/0000_busy_tattoo.sql +7 -0
  52. package/lock/postgres/drizzle/meta/0000_snapshot.json +65 -0
  53. package/lock/postgres/drizzle/meta/_journal.json +13 -0
  54. package/lock/postgres/drizzle.config.js +11 -0
  55. package/lock/postgres/index.d.ts +2 -0
  56. package/lock/postgres/index.js +2 -0
  57. package/lock/postgres/lock.d.ts +14 -0
  58. package/lock/postgres/lock.js +127 -0
  59. package/lock/postgres/models/index.d.ts +2 -0
  60. package/lock/postgres/models/index.js +2 -0
  61. package/lock/postgres/models/lock.model.d.ts +7 -0
  62. package/{examples/orm/user.model.js → lock/postgres/models/lock.model.js} +22 -30
  63. package/lock/postgres/models/schemas.d.ts +3 -0
  64. package/lock/postgres/models/schemas.js +4 -0
  65. package/lock/postgres/module.d.ts +6 -0
  66. package/lock/postgres/module.js +26 -0
  67. package/lock/postgres/provider.d.ts +6 -0
  68. package/lock/postgres/provider.js +29 -0
  69. package/lock/provider.d.ts +12 -2
  70. package/lock/provider.js +24 -1
  71. package/lock/web/web-lock.d.ts +4 -3
  72. package/lock/web/web-lock.js +49 -42
  73. package/lock/web/web-lock.provider.d.ts +0 -3
  74. package/lock/web/web-lock.provider.js +5 -22
  75. package/logger/formatter.d.ts +13 -0
  76. package/logger/formatter.js +3 -0
  77. package/logger/formatters/index.d.ts +2 -0
  78. package/logger/formatters/index.js +2 -0
  79. package/logger/formatters/json.d.ts +5 -0
  80. package/logger/formatters/json.js +33 -0
  81. package/logger/formatters/pretty-print.d.ts +5 -0
  82. package/logger/formatters/pretty-print.js +55 -0
  83. package/logger/index.d.ts +5 -2
  84. package/logger/index.js +5 -2
  85. package/logger/level.d.ts +10 -8
  86. package/logger/level.js +9 -9
  87. package/logger/logger.d.ts +21 -30
  88. package/logger/logger.js +98 -26
  89. package/logger/manager.d.ts +20 -0
  90. package/logger/manager.js +77 -0
  91. package/logger/tokens.d.ts +1 -1
  92. package/logger/tokens.js +1 -1
  93. package/logger/transport.d.ts +14 -0
  94. package/logger/transport.js +16 -0
  95. package/logger/transports/console.d.ts +14 -0
  96. package/logger/transports/console.js +36 -0
  97. package/logger/transports/index.d.ts +1 -0
  98. package/logger/transports/index.js +1 -0
  99. package/mail/clients/nodemailer.mail-client.d.ts +0 -1
  100. package/mail/clients/nodemailer.mail-client.js +9 -7
  101. package/message-bus/local/local-message-bus.js +2 -2
  102. package/message-bus/message-bus-base.d.ts +2 -3
  103. package/message-bus/message-bus-base.js +5 -6
  104. package/message-bus/message-bus.d.ts +1 -2
  105. package/message-bus/message-bus.js +1 -2
  106. package/module/index.d.ts +0 -2
  107. package/module/index.js +0 -2
  108. package/module/module.d.ts +17 -18
  109. package/module/module.js +47 -12
  110. package/module/modules/function.module.d.ts +6 -6
  111. package/module/modules/function.module.js +25 -9
  112. package/module/modules/web-server.module.d.ts +2 -10
  113. package/module/modules/web-server.module.js +3 -11
  114. package/openid-connect/index.d.ts +0 -2
  115. package/openid-connect/index.js +0 -2
  116. package/openid-connect/oidc-state.model.d.ts +4 -5
  117. package/openid-connect/oidc-state.model.js +51 -1
  118. package/openid-connect/oidc.service-model.d.ts +1 -1
  119. package/openid-connect/oidc.service.d.ts +2 -6
  120. package/openid-connect/oidc.service.js +24 -37
  121. package/orm/decorators.d.ts +10 -1
  122. package/orm/decorators.js +8 -0
  123. package/orm/server/repository.d.ts +3 -1
  124. package/orm/server/repository.js +32 -3
  125. package/package.json +17 -28
  126. package/pdf/pdf.service.js +9 -9
  127. package/pool/pool.d.ts +1 -3
  128. package/pool/pool.js +3 -4
  129. package/queue/postgres/job.model.d.ts +1 -2
  130. package/queue/postgres/job.model.js +1 -2
  131. package/queue/postgres/module.js +1 -1
  132. package/threading/thread-pool.d.ts +1 -3
  133. package/threading/thread-pool.js +7 -8
  134. package/utils/format-error.d.ts +7 -0
  135. package/utils/format-error.js +59 -17
  136. package/utils/index.d.ts +1 -0
  137. package/utils/index.js +1 -0
  138. package/utils/object/dereference.d.ts +51 -19
  139. package/utils/object/dereference.js +52 -43
  140. package/utils/timing.js +2 -2
  141. package/utils/try-chain.d.ts +22 -0
  142. package/utils/try-chain.js +46 -0
  143. package/database/entity-repository.d.ts +0 -50
  144. package/database/entity-repository.js +0 -3
  145. package/database/entity.d.ts +0 -7
  146. package/database/entity.js +0 -1
  147. package/database/id.d.ts +0 -1
  148. package/database/id.js +0 -9
  149. package/database/index.d.ts +0 -11
  150. package/database/index.js +0 -11
  151. package/database/module.d.ts +0 -8
  152. package/database/module.js +0 -11
  153. package/database/mongo/classes.d.ts +0 -21
  154. package/database/mongo/classes.js +0 -26
  155. package/database/mongo/index.d.ts +0 -15
  156. package/database/mongo/index.js +0 -15
  157. package/database/mongo/model/document.d.ts +0 -29
  158. package/database/mongo/model/document.js +0 -63
  159. package/database/mongo/model/index.d.ts +0 -1
  160. package/database/mongo/model/index.js +0 -1
  161. package/database/mongo/module.d.ts +0 -8
  162. package/database/mongo/module.js +0 -68
  163. package/database/mongo/mongo-base.repository.d.ts +0 -103
  164. package/database/mongo/mongo-base.repository.js +0 -263
  165. package/database/mongo/mongo-bulk.d.ts +0 -35
  166. package/database/mongo/mongo-bulk.js +0 -90
  167. package/database/mongo/mongo-entity-repository.d.ts +0 -98
  168. package/database/mongo/mongo-entity-repository.js +0 -278
  169. package/database/mongo/operations.d.ts +0 -10
  170. package/database/mongo/operations.js +0 -54
  171. package/database/mongo/query-converter.d.ts +0 -6
  172. package/database/mongo/query-converter.js +0 -83
  173. package/database/mongo/simple-entity-repository.d.ts +0 -7
  174. package/database/mongo/simple-entity-repository.js +0 -6
  175. package/database/mongo/types.d.ts +0 -50
  176. package/database/mongo/types.js +0 -3
  177. package/database/query.d.ts +0 -121
  178. package/database/query.js +0 -7
  179. package/database/utils.d.ts +0 -2
  180. package/database/utils.js +0 -3
  181. package/disposable/async-disposer.d.ts +0 -35
  182. package/disposable/async-disposer.js +0 -125
  183. package/examples/orm/drizzle.config.js +0 -6
  184. package/examples/orm/schemas.d.ts +0 -3
  185. package/examples/orm/schemas.js +0 -4
  186. package/examples/orm/test.d.ts +0 -1
  187. package/examples/orm/test.js +0 -11
  188. package/examples/orm/user.model.d.ts +0 -13
  189. package/key-value-store/mongo/index.d.ts +0 -6
  190. package/key-value-store/mongo/index.js +0 -6
  191. package/key-value-store/mongo/module.d.ts +0 -8
  192. package/key-value-store/mongo/module.js +0 -18
  193. package/key-value-store/mongo/mongo-key-value-store.provider.d.ts +0 -8
  194. package/key-value-store/mongo/mongo-key-value-store.provider.js +0 -26
  195. package/key-value-store/mongo/mongo-key-value.model.d.ts +0 -7
  196. package/key-value-store/mongo/mongo-key-value.model.js +0 -1
  197. package/key-value-store/mongo/mongo-key-value.repository.d.ts +0 -10
  198. package/key-value-store/mongo/mongo-key-value.repository.js +0 -31
  199. package/key-value-store/mongo/mongo-key-value.store.d.ts +0 -15
  200. package/key-value-store/mongo/mongo-key-value.store.js +0 -82
  201. package/key-value-store/mongo/tokens.d.ts +0 -3
  202. package/key-value-store/mongo/tokens.js +0 -2
  203. package/lock/mongo/index.d.ts +0 -5
  204. package/lock/mongo/index.js +0 -5
  205. package/lock/mongo/lock.d.ts +0 -14
  206. package/lock/mongo/lock.js +0 -125
  207. package/lock/mongo/model.d.ts +0 -6
  208. package/lock/mongo/model.js +0 -1
  209. package/lock/mongo/module.d.ts +0 -12
  210. package/lock/mongo/module.js +0 -20
  211. package/lock/mongo/mongo-lock-repository.d.ts +0 -14
  212. package/lock/mongo/mongo-lock-repository.js +0 -67
  213. package/lock/mongo/provider.d.ts +0 -8
  214. package/lock/mongo/provider.js +0 -36
  215. package/logger/console/index.d.ts +0 -1
  216. package/logger/console/index.js +0 -1
  217. package/logger/console/logger.d.ts +0 -11
  218. package/logger/console/logger.js +0 -64
  219. package/logger/noop/index.d.ts +0 -1
  220. package/logger/noop/index.js +0 -1
  221. package/logger/noop/logger.d.ts +0 -9
  222. package/logger/noop/logger.js +0 -21
  223. package/migration/index.d.ts +0 -9
  224. package/migration/index.js +0 -9
  225. package/migration/migration-state-repository.d.ts +0 -4
  226. package/migration/migration-state-repository.js +0 -3
  227. package/migration/migration-state.d.ts +0 -6
  228. package/migration/migration-state.js +0 -1
  229. package/migration/migrator.d.ts +0 -23
  230. package/migration/migrator.js +0 -76
  231. package/migration/mongo/index.d.ts +0 -2
  232. package/migration/mongo/index.js +0 -2
  233. package/migration/mongo/migration-state-repository.d.ts +0 -11
  234. package/migration/mongo/migration-state-repository.js +0 -32
  235. package/migration/mongo/module.d.ts +0 -12
  236. package/migration/mongo/module.js +0 -17
  237. package/module/module-base.d.ts +0 -18
  238. package/module/module-base.js +0 -40
  239. package/module/module-metric-reporter.d.ts +0 -29
  240. package/module/module-metric-reporter.js +0 -62
  241. package/openid-connect/mongo-oidc-state.repository.d.ts +0 -21
  242. package/openid-connect/mongo-oidc-state.repository.js +0 -52
  243. package/openid-connect/oidc-state.repository.d.ts +0 -4
  244. package/openid-connect/oidc-state.repository.js +0 -3
  245. package/process-shutdown.d.ts +0 -9
  246. package/process-shutdown.js +0 -65
  247. package/queue/mongo/index.d.ts +0 -4
  248. package/queue/mongo/index.js +0 -4
  249. package/queue/mongo/job.d.ts +0 -12
  250. package/queue/mongo/job.js +0 -1
  251. package/queue/mongo/mongo-job.repository.d.ts +0 -13
  252. package/queue/mongo/mongo-job.repository.js +0 -54
  253. package/queue/mongo/queue.d.ts +0 -38
  254. package/queue/mongo/queue.js +0 -266
  255. package/queue/mongo/queue.provider.d.ts +0 -18
  256. package/queue/mongo/queue.provider.js +0 -38
  257. package/search-index/elastic/config.d.ts +0 -8
  258. package/search-index/elastic/config.js +0 -26
  259. package/search-index/elastic/index.d.ts +0 -8
  260. package/search-index/elastic/index.js +0 -8
  261. package/search-index/elastic/keyword-rewriter.d.ts +0 -8
  262. package/search-index/elastic/keyword-rewriter.js +0 -18
  263. package/search-index/elastic/model/elastic-query.d.ts +0 -16
  264. package/search-index/elastic/model/elastic-query.js +0 -1
  265. package/search-index/elastic/model/index-mapping.d.ts +0 -26
  266. package/search-index/elastic/model/index-mapping.js +0 -4
  267. package/search-index/elastic/model/index.d.ts +0 -3
  268. package/search-index/elastic/model/index.js +0 -3
  269. package/search-index/elastic/model/sort.d.ts +0 -8
  270. package/search-index/elastic/model/sort.js +0 -1
  271. package/search-index/elastic/module.d.ts +0 -10
  272. package/search-index/elastic/module.js +0 -49
  273. package/search-index/elastic/query-builder/boolean-query-builder.d.ts +0 -11
  274. package/search-index/elastic/query-builder/boolean-query-builder.js +0 -52
  275. package/search-index/elastic/query-builder/index.d.ts +0 -1
  276. package/search-index/elastic/query-builder/index.js +0 -1
  277. package/search-index/elastic/query-converter.d.ts +0 -9
  278. package/search-index/elastic/query-converter.js +0 -183
  279. package/search-index/elastic/search-index.d.ts +0 -30
  280. package/search-index/elastic/search-index.js +0 -144
  281. package/search-index/elastic/sort-converter.d.ts +0 -4
  282. package/search-index/elastic/sort-converter.js +0 -14
  283. package/search-index/elastic/types.d.ts +0 -5
  284. package/search-index/elastic/types.js +0 -1
  285. package/search-index/error.d.ts +0 -10
  286. package/search-index/error.js +0 -14
  287. package/search-index/index.d.ts +0 -3
  288. package/search-index/index.js +0 -3
  289. package/search-index/memory/index.d.ts +0 -1
  290. package/search-index/memory/index.js +0 -1
  291. package/search-index/memory/memory-search-index.d.ts +0 -19
  292. package/search-index/memory/memory-search-index.js +0 -144
  293. package/search-index/search-index.d.ts +0 -46
  294. package/search-index/search-index.js +0 -31
  295. package/search-index/search-result.d.ts +0 -12
  296. package/search-index/search-result.js +0 -1
  297. package/theme/adapters/css-adapter.d.ts +0 -5
  298. package/theme/adapters/css-adapter.js +0 -29
  299. package/theme/adapters/index.d.ts +0 -2
  300. package/theme/adapters/index.js +0 -2
  301. package/theme/adapters/tailwind-adapter.d.ts +0 -18
  302. package/theme/adapters/tailwind-adapter.js +0 -32
  303. package/theme/index.d.ts +0 -1
  304. package/theme/index.js +0 -1
  305. package/theme/theme-service.d.ts +0 -43
  306. package/theme/theme-service.js +0 -128
  307. /package/{examples/orm → lock/postgres}/drizzle.config.d.ts +0 -0
@@ -1 +1,51 @@
1
- export {};
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 { ExpiresAt as Expires } from '../orm/decorators.js';
11
+ import { EntityWithoutMetadata, Json, Unique } from '../orm/index.js';
12
+ import { any, NumberProperty, StringProperty } from '../schema/index.js';
13
+ export class OidcState extends EntityWithoutMetadata {
14
+ value;
15
+ codeVerifier;
16
+ endpoint;
17
+ clientId;
18
+ clientSecret;
19
+ expiration;
20
+ data;
21
+ }
22
+ __decorate([
23
+ Unique(),
24
+ StringProperty(),
25
+ __metadata("design:type", String)
26
+ ], OidcState.prototype, "value", void 0);
27
+ __decorate([
28
+ StringProperty(),
29
+ __metadata("design:type", String)
30
+ ], OidcState.prototype, "codeVerifier", void 0);
31
+ __decorate([
32
+ StringProperty(),
33
+ __metadata("design:type", String)
34
+ ], OidcState.prototype, "endpoint", void 0);
35
+ __decorate([
36
+ StringProperty(),
37
+ __metadata("design:type", String)
38
+ ], OidcState.prototype, "clientId", void 0);
39
+ __decorate([
40
+ StringProperty(),
41
+ __metadata("design:type", String)
42
+ ], OidcState.prototype, "clientSecret", void 0);
43
+ __decorate([
44
+ Expires(),
45
+ NumberProperty(),
46
+ __metadata("design:type", Number)
47
+ ], OidcState.prototype, "expiration", void 0);
48
+ __decorate([
49
+ Json({ schema: any() }),
50
+ __metadata("design:type", Object)
51
+ ], OidcState.prototype, "data", void 0);
@@ -1,4 +1,4 @@
1
- export type OidcInitParameters<Data = void> = {
1
+ export type OidcInitParameters<Data> = {
2
2
  endpoint: string;
3
3
  clientId: string;
4
4
  clientSecret: string;
@@ -1,15 +1,11 @@
1
- import { HttpClient } from '../http/client/index.js';
2
1
  import type { Record } from '../types/index.js';
3
- import { OidcConfigurationService } from './oidc-configuration.service.js';
4
- import type { OidcState } from './oidc-state.model.js';
5
- import { OidcStateRepository } from './oidc-state.repository.js';
2
+ import { OidcState } from './oidc-state.model.js';
6
3
  import type { OidcGetTokenParameters, OidcInitParameters, OidcInitResult, OidcRefreshTokenParameters, OidcToken } from './oidc.service-model.js';
7
- export declare class OidcService<Data = any> {
4
+ export declare class OidcService<Data> {
8
5
  private readonly oidcConfigurationService;
9
6
  private readonly maybeOidcStateRepository;
10
7
  private readonly httpClient;
11
8
  private get oidcStateRepository();
12
- constructor(oidcConfigurationService: OidcConfigurationService, oidcStateRepository: OidcStateRepository | undefined, httpClient: HttpClient);
13
9
  initAuthorization({ endpoint, clientId, clientSecret, scope, expiration, data }: OidcInitParameters<Data>): Promise<OidcInitResult>;
14
10
  getState(state: string): Promise<OidcState<Data>>;
15
11
  deleteState(state: string): Promise<void>;
@@ -4,57 +4,46 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
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
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
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
- var __param = (this && this.__param) || function (paramIndex, decorator) {
11
- return function (target, key) { decorator(target, key, paramIndex); }
12
- };
13
7
  import { ForbiddenError } from '../errors/forbidden.error.js';
14
8
  import { NotImplementedError } from '../errors/not-implemented.error.js';
15
9
  import { HttpClient } from '../http/client/index.js';
16
10
  import { HttpHeaders } from '../http/http-headers.js';
17
- import { Inject, Optional, Singleton } from '../injector/index.js';
18
- import { Schema, object, optional, string } from '../schema/index.js';
11
+ import { inject, Singleton } from '../injector/index.js';
12
+ import { injectRepository } from '../orm/server/repository.js';
13
+ import { object, optional, Schema, string } from '../schema/index.js';
19
14
  import { Alphabet } from '../utils/alphabet.js';
20
15
  import { digest } from '../utils/cryptography.js';
21
16
  import { currentTimestamp } from '../utils/date-time.js';
22
17
  import { getRandomString } from '../utils/random.js';
23
18
  import { assertDefinedPass, isUndefined } from '../utils/type-guards.js';
24
19
  import { OidcConfigurationService } from './oidc-configuration.service.js';
25
- import { OidcStateRepository } from './oidc-state.repository.js';
20
+ import { OidcState } from './oidc-state.model.js';
26
21
  const tokenResponseSchema = object({
27
22
  /* eslint-disable @typescript-eslint/naming-convention */
28
23
  access_token: string(),
29
24
  id_token: optional(string()),
30
25
  token_type: string(),
31
- refresh_token: optional(string())
26
+ refresh_token: optional(string()),
32
27
  /* eslint-enable @typescript-eslint/naming-convention */
33
28
  });
34
29
  let OidcService = class OidcService {
35
- oidcConfigurationService;
36
- maybeOidcStateRepository;
37
- httpClient;
30
+ oidcConfigurationService = inject(OidcConfigurationService);
31
+ maybeOidcStateRepository = injectRepository(OidcState);
32
+ httpClient = inject(HttpClient);
38
33
  get oidcStateRepository() {
39
34
  return assertDefinedPass(this.maybeOidcStateRepository, 'OidcStateRepository is not provided but required.');
40
35
  }
41
- constructor(oidcConfigurationService, oidcStateRepository, httpClient) {
42
- this.oidcConfigurationService = oidcConfigurationService;
43
- this.maybeOidcStateRepository = oidcStateRepository;
44
- this.httpClient = httpClient;
45
- }
46
36
  async initAuthorization({ endpoint, clientId, clientSecret, scope, expiration, data }) {
47
37
  const oidcConfiguration = await this.oidcConfigurationService.getConfiguration(endpoint);
48
- const state = {
38
+ const state = await this.oidcStateRepository.insert({
49
39
  value: getRandomString(64, Alphabet.LowerUpperCaseNumbers),
50
40
  codeVerifier: getRandomString(64, Alphabet.LowerUpperCaseNumbers),
51
41
  endpoint,
52
42
  clientId,
53
43
  clientSecret,
54
44
  expiration: currentTimestamp() + expiration,
55
- data
56
- };
57
- await this.oidcStateRepository.insert(state);
45
+ data,
46
+ });
58
47
  const codeChallenge = await digest('SHA-256', state.codeVerifier).toBase64Url();
59
48
  const result = {
60
49
  authorizationEndpoint: oidcConfiguration.authorizationEndpoint,
@@ -62,21 +51,22 @@ let OidcService = class OidcService {
62
51
  clientId,
63
52
  scope,
64
53
  codeChallenge,
65
- codeChallengeMethod: 'S256'
54
+ codeChallengeMethod: 'S256',
66
55
  };
67
56
  return result;
68
57
  }
69
58
  async getState(state) {
70
- return this.oidcStateRepository.loadByFilter({ value: state });
59
+ return await this.oidcStateRepository.loadByQuery({ value: state });
71
60
  }
72
61
  async deleteState(state) {
73
- await this.oidcStateRepository.deleteByFilter({ value: state });
62
+ await this.oidcStateRepository.deleteByQuery({ value: state });
74
63
  }
75
64
  async validateState(state) {
76
- const oidcState = await this.oidcStateRepository.tryLoadByFilterAndDelete({ value: state });
65
+ const oidcState = await this.oidcStateRepository.tryLoadByQuery({ value: state });
77
66
  if (isUndefined(oidcState)) {
78
- throw new ForbiddenError('invalid state code');
67
+ throw new ForbiddenError('Invalid state code.');
79
68
  }
69
+ await this.oidcStateRepository.deleteByQuery({ value: state });
80
70
  return oidcState;
81
71
  }
82
72
  async getToken(parameters, additionalData) {
@@ -96,7 +86,7 @@ let OidcService = class OidcService {
96
86
  code: parameters.code,
97
87
  code_verifier: parameters.codeVerifier,
98
88
  redirect_uri: parameters.redirectUri,
99
- ...additionalData
89
+ ...additionalData,
100
90
  /* eslint-enable @typescript-eslint/naming-convention */
101
91
  };
102
92
  break;
@@ -105,7 +95,7 @@ let OidcService = class OidcService {
105
95
  /* eslint-disable @typescript-eslint/naming-convention */
106
96
  grant_type: 'client_credentials',
107
97
  scope: parameters.scope,
108
- ...additionalData
98
+ ...additionalData,
109
99
  /* eslint-enable @typescript-eslint/naming-convention */
110
100
  };
111
101
  break;
@@ -122,8 +112,8 @@ let OidcService = class OidcService {
122
112
  authorization = {
123
113
  basic: {
124
114
  username: parameters.clientId,
125
- password: parameters.clientSecret
126
- }
115
+ password: parameters.clientSecret,
116
+ },
127
117
  };
128
118
  break;
129
119
  default:
@@ -139,7 +129,7 @@ let OidcService = class OidcService {
139
129
  client_id: clientId,
140
130
  client_secret: clientSecret,
141
131
  grant_type: 'refresh_token',
142
- refresh_token: refreshToken
132
+ refresh_token: refreshToken,
143
133
  /* eslint-enable @typescript-eslint/naming-convention */
144
134
  };
145
135
  const tokenResponse = await this.httpClient.postJson(oidcConfiguration.tokenEndpoint, { headers: { authorization: `Bearer ${refreshToken}` }, body: { form: formData } });
@@ -155,10 +145,7 @@ let OidcService = class OidcService {
155
145
  }
156
146
  };
157
147
  OidcService = __decorate([
158
- Singleton(),
159
- __param(1, Inject(OidcStateRepository)),
160
- __param(1, Optional()),
161
- __metadata("design:paramtypes", [OidcConfigurationService, Object, HttpClient])
148
+ Singleton()
162
149
  ], OidcService);
163
150
  export { OidcService };
164
151
  function parseTokenResponse(response) {
@@ -168,7 +155,7 @@ function parseTokenResponse(response) {
168
155
  accessToken: access_token,
169
156
  idToken: id_token,
170
157
  refreshToken: refresh_token,
171
- raw: response
158
+ raw: response,
172
159
  };
173
160
  return token;
174
161
  }
@@ -57,6 +57,9 @@ export type OrmColumnReflectionData = {
57
57
  targetColumn?: TargetColumnPaths<any>;
58
58
  }[];
59
59
  encrypted?: boolean;
60
+ expirationField?: {
61
+ mode: 'soft' | 'hard';
62
+ };
60
63
  };
61
64
  /**
62
65
  * Reflection data for unique constraints.
@@ -121,7 +124,7 @@ export declare function createColumnDecorator(data?: OrmColumnReflectionData): P
121
124
  * @param data - The ORM reflection data to add.
122
125
  * @returns A class or property decorator.
123
126
  */
124
- export declare function createTableAndColumnDecorator(data?: OrmColumnReflectionData): ClassDecorator & PropertyDecorator;
127
+ export declare function createTableAndColumnDecorator(data?: OrmColumnReflectionData): PropertyDecorator & ClassDecorator;
125
128
  /**
126
129
  * Decorator to specify ORM column options.
127
130
  * @param options - Column configuration options.
@@ -217,4 +220,10 @@ export declare function Index<T extends Entity | EntityWithoutMetadata = any>(op
217
220
  * @returns A class decorator.
218
221
  */
219
222
  export declare function Index<T extends Entity | EntityWithoutMetadata = any>(columns: Columns<T>, options?: IndexReflectionData<T>['options']): ClassDecorator;
223
+ /**
224
+ * Decorator to mark a column as an expiration field. This will be used to automatically delete records when expired.
225
+ * @param mode - Whether to delete soft or hard.
226
+ * @returns A property decorator.
227
+ */
228
+ export declare function ExpiresAt(mode?: 'soft' | 'hard'): PropertyDecorator;
220
229
  export {};
package/orm/decorators.js CHANGED
@@ -145,3 +145,11 @@ export function Index(columnsOrOptions, options) {
145
145
  }
146
146
  return createColumnDecorator({ index: { options: columnsOrOptions } });
147
147
  }
148
+ /**
149
+ * Decorator to mark a column as an expiration field. This will be used to automatically delete records when expired.
150
+ * @param mode - Whether to delete soft or hard.
151
+ * @returns A property decorator.
152
+ */
153
+ export function ExpiresAt(mode = 'soft') {
154
+ return createColumnDecorator({ expirationField: { mode } });
155
+ }
@@ -1,6 +1,6 @@
1
1
  import { SQL } from 'drizzle-orm';
2
2
  import type { PgColumn, PgInsertValue, PgUpdateSetSource } from 'drizzle-orm/pg-core';
3
- import { type Resolvable, resolveArgumentType } from '../../injector/interfaces.js';
3
+ import { afterResolve, type Resolvable, resolveArgumentType } from '../../injector/interfaces.js';
4
4
  import type { DeepPartial, OneOrMany, Paths, Type, UntaggedDeep } from '../../types/index.js';
5
5
  import { Entity, type EntityMetadataAttributes, type EntityType, type EntityWithoutMetadata } from '../entity.js';
6
6
  import type { Query } from '../query.js';
@@ -37,6 +37,8 @@ export declare class EntityRepository<T extends Entity | EntityWithoutMetadata =
37
37
  */
38
38
  get table(): PgTableFromType<EntityType<T>>;
39
39
  readonly [resolveArgumentType]: EntityType<T>;
40
+ [afterResolve](): void;
41
+ private expirationLoop;
40
42
  protected getTransactionalContextData(): EntityRepositoryContext;
41
43
  /**
42
44
  * Loads a single entity by its ID.
@@ -4,20 +4,24 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
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
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { and, asc, count, desc, eq, inArray, isNull, isSQLWrapper, SQL, sql } from 'drizzle-orm';
7
+ import { and, asc, count, desc, eq, inArray, isNull, isSQLWrapper, lte, or, SQL, sql } from 'drizzle-orm';
8
8
  import { match } from 'ts-pattern';
9
+ import { CancellationSignal } from '../../cancellation/token.js';
9
10
  import { NotFoundError } from '../../errors/not-found.error.js';
10
11
  import { Singleton } from '../../injector/decorators.js';
11
12
  import { inject, injectArgument } from '../../injector/inject.js';
12
- import { resolveArgumentType } from '../../injector/interfaces.js';
13
+ import { afterResolve, resolveArgumentType } from '../../injector/interfaces.js';
13
14
  import { Schema } from '../../schema/schema.js';
14
15
  import { distinct, toArray } from '../../utils/array/array.js';
15
16
  import { mapAsync } from '../../utils/async-iterable-helpers/map.js';
16
17
  import { toArrayAsync } from '../../utils/async-iterable-helpers/to-array.js';
17
18
  import { importSymmetricKey } from '../../utils/cryptography.js';
18
19
  import { fromDeepObjectEntries, fromEntries, objectEntries } from '../../utils/object/object.js';
19
- import { assertDefinedPass, isArray, isDefined, isString, isUndefined } from '../../utils/type-guards.js';
20
+ import { cancelableTimeout } from '../../utils/timing.js';
21
+ import { tryIgnoreAsync } from '../../utils/try-ignore.js';
22
+ import { assertDefined, assertDefinedPass, isArray, isDefined, isString, isUndefined } from '../../utils/type-guards.js';
20
23
  import { typeExtends } from '../../utils/type/index.js';
24
+ import { millisecondsPerSecond } from '../../utils/units.js';
21
25
  import { Entity } from '../entity.js';
22
26
  import { TRANSACTION_TIMESTAMP } from '../sqls.js';
23
27
  import { getColumnDefinitions, getColumnDefinitionsMap, getDrizzleTableFromType } from './drizzle/schema-converter.js';
@@ -37,6 +41,7 @@ const entityTypeToken = Symbol('EntityType');
37
41
  let EntityRepository = class EntityRepository extends Transactional {
38
42
  #context = isInTransactionalContext() ? getTransactionalContextData(this) : {};
39
43
  #encryptionSecret = isInTransactionalContext() ? this.#context.encryptionSecret : inject(ENCRYPTION_SECRET, undefined, { optional: true });
44
+ #cancellationSignal = isInTransactionalContext() ? undefined : inject(CancellationSignal);
40
45
  #transformContext = this.#context.transformContext;
41
46
  type = this.#context.type ?? injectArgument(this, { optional: true }) ?? assertDefinedPass(this.constructor[entityTypeToken], 'Missing entity type.');
42
47
  typeName = this.type.entityName ?? this.type.name;
@@ -51,6 +56,30 @@ let EntityRepository = class EntityRepository extends Transactional {
51
56
  get table() {
52
57
  return this.#table;
53
58
  }
59
+ [afterResolve]() {
60
+ if (!this.isInTransaction) {
61
+ void this.expirationLoop();
62
+ }
63
+ }
64
+ async expirationLoop() {
65
+ const softExpirationColumns = this.#columnDefinitions.filter((column) => column.reflectionData?.expirationField?.mode == 'soft');
66
+ const hardExpirationColumns = this.#columnDefinitions.filter((column) => column.reflectionData?.expirationField?.mode == 'hard');
67
+ if ((softExpirationColumns.length + hardExpirationColumns.length) == 0) {
68
+ return;
69
+ }
70
+ const softDeletionQuery = or(...softExpirationColumns.map((column) => lte(this.getColumn(column), TRANSACTION_TIMESTAMP)));
71
+ const hardDeletionQuery = or(...hardExpirationColumns.map((column) => lte(this.getColumn(column), TRANSACTION_TIMESTAMP)));
72
+ assertDefined(this.#cancellationSignal);
73
+ while (this.#cancellationSignal.isUnset) {
74
+ if (isDefined(softDeletionQuery)) {
75
+ await tryIgnoreAsync(async () => await this.deleteManyByQuery(softDeletionQuery));
76
+ }
77
+ if (isDefined(hardDeletionQuery)) {
78
+ await tryIgnoreAsync(async () => await this.hardDeleteManyByQuery(hardDeletionQuery));
79
+ }
80
+ await cancelableTimeout(30 * millisecondsPerSecond, this.#cancellationSignal);
81
+ }
82
+ }
54
83
  getTransactionalContextData() {
55
84
  const context = {
56
85
  type: this.type,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tstdl/base",
3
- "version": "0.92.167",
3
+ "version": "0.92.168",
4
4
  "author": "Patrick Hein",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -11,27 +11,31 @@
11
11
  "build:watch": "concurrently --raw --kill-others npm:tsc:watch npm:tsc-alias:watch",
12
12
  "build:production": "rm -rf dist && npm run build && npm run build:production:copy-files",
13
13
  "build:production:copy-files": "cp package.json eslint.config.js tsconfig.server.json dist/ && cp tsconfig.base.json dist/tsconfig.json && npm run copy:orm",
14
- "build:dts": "tsc -p tsconfig.dts.json",
14
+ "build:dts": "rm -rf dist && tsc -p tsconfig.dts.json",
15
15
  "build:docs": "typedoc",
16
16
  "build:docs:watch": "typedoc --watch",
17
17
  "lint": "eslint --cache source/",
18
- "pub": "npm run build:production && rm -vf dist/test* && rm -vrf dist/tools/ && npm publish dist/",
18
+ "pub": "npm run build:production && npm run cleanup:dist && npm publish dist/",
19
19
  "tsc:watch": "tsc --watch",
20
20
  "tsc-alias:watch": "tsc-alias --watch",
21
- "generate:migration": "npm run generate:migration:document-management && npm run generate:migration:authentication && npm run generate:migration:mail && npm run generate:migration:queue && npm run generate:migration:key-value-store",
21
+ "cleanup:dist": "rm -vf dist/test* && rm -vrf dist/tools/",
22
+ "generate:migration": "npm run generate:migration:document-management && npm run generate:migration:authentication && npm run generate:migration:mail && npm run generate:migration:queue && npm run generate:migration:key-value-store && npm run generate:migration:lock",
22
23
  "generate:migration:document-management": "drizzle-kit generate --config dist/document-management/server/drizzle.config.js",
23
24
  "generate:migration:authentication": "drizzle-kit generate --config dist/authentication/server/drizzle.config.js",
24
25
  "generate:migration:mail": "drizzle-kit generate --config dist/mail/drizzle.config.js",
25
26
  "generate:migration:queue": "drizzle-kit generate --config dist/queue/postgres/drizzle.config.js",
26
27
  "generate:migration:key-value-store": "drizzle-kit generate --config dist/key-value-store/postgres/drizzle.config.js",
27
- "generate:readmes": "deno run --allow-run=repomix --allow-read=source --allow-write=source --allow-net=generativelanguage.googleapis.com --allow-env=GEMINI_API_KEY generate-readmes.ts",
28
+ "generate:migration:lock": "drizzle-kit generate --config dist/lock/postgres/drizzle.config.js",
29
+ "generate:readmes": "deno run --allow-run=code2prompt --allow-read --allow-write=source --allow-net=generativelanguage.googleapis.com --allow-env=GEMINI_API_KEY generate-readmes.ts",
28
30
  "generate:readmes:new-only": "npm run generate:readmes -- --skip-existing",
29
- "copy:orm": "npm run copy:orm:document-management && npm run copy:orm:authentication && npm run copy:orm:mail && npm run copy:orm:queue && npm run copy:orm:key-value-store",
31
+ "generate:context7-docs": "npm run build:dts && npm run cleanup:dist && ./scripts/generate-context7-docs.sh",
32
+ "copy:orm": "npm run copy:orm:document-management && npm run copy:orm:authentication && npm run copy:orm:mail && npm run copy:orm:queue && npm run copy:orm:key-value-store && npm run copy:orm:lock",
30
33
  "copy:orm:document-management": "rm -rf ./dist/document-management/server/drizzle && cp -r ./source/document-management/server/drizzle ./dist/document-management/server/",
31
34
  "copy:orm:authentication": "rm -rf ./dist/authentication/server/drizzle && cp -r ./source/authentication/server/drizzle ./dist/authentication/server/",
32
35
  "copy:orm:mail": "rm -rf ./dist/mail/drizzle && cp -r ./source/mail/drizzle ./dist/mail/",
33
36
  "copy:orm:queue": "rm -rf ./dist/queue/postgres/drizzle && cp -r ./source/queue/postgres/drizzle ./dist/queue/postgres/",
34
- "copy:orm:key-value-store": "rm -rf ./dist/key-value-store/postgres/drizzle && cp -r ./source/key-value-store/postgres/drizzle ./dist/key-value-store/postgres/"
37
+ "copy:orm:key-value-store": "rm -rf ./dist/key-value-store/postgres/drizzle && cp -r ./source/key-value-store/postgres/drizzle ./dist/key-value-store/postgres/",
38
+ "copy:orm:lock": "rm -rf ./dist/lock/postgres/drizzle && cp -r ./source/lock/postgres/drizzle ./dist/lock/postgres/"
35
39
  },
36
40
  "exports": {
37
41
  "./tsconfig.json": "./tsconfig.json",
@@ -40,7 +44,6 @@
40
44
  "./environment": "./environment.js",
41
45
  "./interfaces": "./interfaces.js",
42
46
  "./polyfills": "./polyfills.js",
43
- "./process-shutdown": "./process-shutdown.js",
44
47
  "./supports": "./supports.js",
45
48
  "./tokens": "./tokens.js",
46
49
  "./ai": "./ai/index.js",
@@ -55,8 +58,6 @@
55
58
  "./cookie": "./cookie/index.js",
56
59
  "./css": "./css/index.js",
57
60
  "./data-structures": "./data-structures/index.js",
58
- "./database": "./database/index.js",
59
- "./database/mongo": "./database/mongo/index.js",
60
61
  "./decorators": "./decorators/index.js",
61
62
  "./disposable": "./disposable/index.js",
62
63
  "./distributed-loop": "./distributed-loop/index.js",
@@ -79,10 +80,9 @@
79
80
  "./json-path": "./json-path/index.js",
80
81
  "./jsx": "./jsx/index.js",
81
82
  "./key-value-store": "./key-value-store/index.js",
82
- "./key-value-store/mongo": "./key-value-store/mongo/index.js",
83
83
  "./key-value-store/postgres": "./key-value-store/postgres/index.js",
84
84
  "./lock": "./lock/index.js",
85
- "./lock/mongo": "./lock/mongo/index.js",
85
+ "./lock/postgres": "./lock/postgres/index.js",
86
86
  "./lock/web": "./lock/web/index.js",
87
87
  "./logger": "./logger/index.js",
88
88
  "./mail": "./mail/index.js",
@@ -100,7 +100,6 @@
100
100
  "./process": "./process/index.js",
101
101
  "./promise": "./promise/index.js",
102
102
  "./queue": "./queue/index.js",
103
- "./queue/mongo": "./queue/mongo/index.js",
104
103
  "./queue/postgres": "./queue/postgres/index.js",
105
104
  "./random": "./random/index.js",
106
105
  "./reflection": "./reflection/index.js",
@@ -109,9 +108,6 @@
109
108
  "./rxjs-utils": "./rxjs-utils/index.js",
110
109
  "./schema": "./schema/index.js",
111
110
  "./schema/converters": "./schema/converters/index.js",
112
- "./search-index": "./search-index/index.js",
113
- "./search-index/elastic": "./search-index/elastic/index.js",
114
- "./search-index/memory": "./search-index/memory/index.js",
115
111
  "./serializer": "./serializer/index.js",
116
112
  "./serializer/handlers": "./serializer/handlers/index.js",
117
113
  "./signals": "./signals/index.js",
@@ -123,8 +119,6 @@
123
119
  "./templates/resolvers": "./templates/resolvers/index.js",
124
120
  "./templates/types": "./templates/types/index.js",
125
121
  "./text": "./text/index.js",
126
- "./theme": "./theme/index.js",
127
- "./theme/adapters": "./theme/adapters/index.js",
128
122
  "./threading": "./threading/index.js",
129
123
  "./types": "./types/index.js",
130
124
  "./utils": "./utils/index.js",
@@ -148,28 +142,25 @@
148
142
  "type-fest": "4.37"
149
143
  },
150
144
  "peerDependencies": {
151
- "@elastic/elasticsearch": "^9.1",
152
145
  "@google-cloud/storage": "^7.17",
153
- "@google/genai": "^1.15",
146
+ "@google/genai": "^1.17",
154
147
  "@tstdl/angular": "^0.92",
155
148
  "@zxcvbn-ts/core": "^3.0",
156
149
  "@zxcvbn-ts/language-common": "^3.0",
157
150
  "@zxcvbn-ts/language-de": "^3.0",
158
151
  "@zxcvbn-ts/language-en": "^3.0",
159
- "chroma-js": "^2.6",
160
152
  "drizzle-orm": "^0.44",
161
153
  "file-type": "^21.0",
162
154
  "handlebars": "^4.7",
163
155
  "minio": "^8.0",
164
156
  "mjml": "^4.15",
165
- "mongodb": "^6.18",
166
157
  "nodemailer": "^7.0",
167
158
  "pg": "^8.16",
168
159
  "playwright": "^1.55",
169
160
  "preact": "^10.27",
170
161
  "preact-render-to-string": "^6.6",
171
162
  "sharp": "^0.34",
172
- "undici": "^7.14",
163
+ "undici": "^7.15",
173
164
  "urlpattern-polyfill": "^10.1"
174
165
  },
175
166
  "peerDependenciesMeta": {
@@ -178,8 +169,7 @@
178
169
  }
179
170
  },
180
171
  "devDependencies": {
181
- "@stylistic/eslint-plugin": "5.2",
182
- "@types/chroma-js": "2.4",
172
+ "@stylistic/eslint-plugin": "5.3",
183
173
  "@types/koa__router": "12.0",
184
174
  "@types/luxon": "3.7",
185
175
  "@types/minio": "7.1",
@@ -189,15 +179,14 @@
189
179
  "@types/pg": "8.15",
190
180
  "concurrently": "9.2",
191
181
  "drizzle-kit": "0.31",
192
- "eslint": "9.33",
182
+ "eslint": "9.34",
193
183
  "globals": "16.3",
194
- "repomix": "1.3",
195
184
  "tsc-alias": "1.8",
196
185
  "typedoc-github-wiki-theme": "2.1",
197
186
  "typedoc-plugin-markdown": "4.8",
198
187
  "typedoc-plugin-missing-exports": "4.1",
199
188
  "typescript": "5.9",
200
- "typescript-eslint": "8.40"
189
+ "typescript-eslint": "8.42"
201
190
  },
202
191
  "overrides": {
203
192
  "drizzle-kit": {
@@ -24,7 +24,7 @@ import { finalizeStream } from '../utils/stream/finalize-stream.js';
24
24
  import { readableStreamFromPromise } from '../utils/stream/from-promise.js';
25
25
  import { readBinaryStream } from '../utils/stream/stream-reader.js';
26
26
  import { timeout } from '../utils/timing.js';
27
- import { isDefined } from '../utils/type-guards.js';
27
+ import { isDefined, isNumber } from '../utils/type-guards.js';
28
28
  export class PdfServiceRenderOptions extends PdfRenderOptions {
29
29
  browserContext;
30
30
  locale;
@@ -81,7 +81,7 @@ let PdfService = class PdfService {
81
81
  * @returns pdf stream
82
82
  */
83
83
  renderHtmlStream(html, options) {
84
- return this.renderStream(async (page) => page.setContent(html), options);
84
+ return this.renderStream(async (page) => await page.setContent(html), options);
85
85
  }
86
86
  /**
87
87
  * Renders HTML to pdf
@@ -91,7 +91,7 @@ let PdfService = class PdfService {
91
91
  */
92
92
  async renderHtml(html, options) {
93
93
  const stream = this.renderHtmlStream(html, options);
94
- return readBinaryStream(stream);
94
+ return await readBinaryStream(stream);
95
95
  }
96
96
  /**
97
97
  * Renders an url to pdf stream
@@ -112,7 +112,7 @@ let PdfService = class PdfService {
112
112
  */
113
113
  async renderUrl(url, options) {
114
114
  const stream = this.renderUrlStream(url, options);
115
- return readBinaryStream(stream);
115
+ return await readBinaryStream(stream);
116
116
  }
117
117
  /**
118
118
  * Renders a template to pdf
@@ -137,15 +137,15 @@ let PdfService = class PdfService {
137
137
  */
138
138
  async renderTemplate(keyOrTemplate, templateContext, options) {
139
139
  const stream = this.renderTemplateStream(keyOrTemplate, templateContext, options);
140
- return readBinaryStream(stream);
140
+ return await readBinaryStream(stream);
141
141
  }
142
142
  renderStream(handler, options = {}) {
143
143
  return readableStreamFromPromise(async () => {
144
144
  const context = options.browserContext ?? await this.browserController.newContext({ locale: options.locale ?? this.defaultLocale });
145
145
  const page = await context.newPage();
146
146
  if (isDefined(options.log) && (options.log != false)) {
147
- const level = (options.log == true) ? LogLevel.Trace : options.log;
148
- const logger = this.logger.fork({ level, subModule: 'PAGE' });
147
+ const level = isNumber(options.log) ? options.log : LogLevel.Trace;
148
+ const logger = this.logger.fork('PAGE', { level });
149
149
  page.attachLogger(logger);
150
150
  }
151
151
  const optionsFromHandler = await handler(page);
@@ -165,7 +165,7 @@ let PdfService = class PdfService {
165
165
  return finalizeStream(pdfStream, {
166
166
  beforeDone: close,
167
167
  beforeCancel: close,
168
- error: close
168
+ error: close,
169
169
  });
170
170
  });
171
171
  }
@@ -178,6 +178,6 @@ export function pdfTemplate(name, fields, options) {
178
178
  return {
179
179
  name,
180
180
  fields,
181
- options
181
+ options,
182
182
  };
183
183
  }
package/pool/pool.d.ts CHANGED
@@ -1,5 +1,3 @@
1
- import type { AsyncDisposable } from '../disposable/disposable.js';
2
- import { disposeAsync } from '../disposable/disposable.js';
3
1
  import type { Logger } from '../logger/index.js';
4
2
  export type PoolOptions = {
5
3
  /**
@@ -45,5 +43,5 @@ export declare class Pool<T extends object> implements AsyncDisposable {
45
43
  use<R>(handler: (instance: T) => R | Promise<R>, options?: PoolUseOptions): Promise<R>;
46
44
  disposeInstance(instance: T): Promise<void>;
47
45
  dispose(): Promise<void>;
48
- [disposeAsync](): Promise<void>;
46
+ [Symbol.asyncDispose](): Promise<void>;
49
47
  }
package/pool/pool.js CHANGED
@@ -1,6 +1,5 @@
1
1
  import { ArrayList } from '../data-structures/array-list.js';
2
2
  import { SetCollection } from '../data-structures/set-collection.js';
3
- import { disposeAsync } from '../disposable/disposable.js';
4
3
  import { hardwareConcurrency } from '../environment.js';
5
4
  import { isDefined } from '../utils/type-guards.js';
6
5
  export class Pool {
@@ -57,7 +56,7 @@ export class Pool {
57
56
  while (!this.freeInstances.hasItems) {
58
57
  await this.freeInstances.$onItems;
59
58
  }
60
- return this.get();
59
+ return await this.get();
61
60
  }
62
61
  async release(instance) {
63
62
  if (this.freeInstances.includes(instance)) {
@@ -110,9 +109,9 @@ export class Pool {
110
109
  await this.disposer(instance);
111
110
  }
112
111
  async dispose() {
113
- return this[disposeAsync]();
112
+ await this[Symbol.asyncDispose]();
114
113
  }
115
- async [disposeAsync]() {
114
+ async [Symbol.asyncDispose]() {
116
115
  this.disposed = true;
117
116
  if (this.length == 0) {
118
117
  return;
@@ -1,5 +1,4 @@
1
- import { EntityWithoutMetadata } from '../../orm/entity.js';
2
- import { Integer, Json, Timestamp } from '../../orm/index.js';
1
+ import { EntityWithoutMetadata, Integer, Json, Timestamp } from '../../orm/index.js';
3
2
  import type { ObjectLiteral } from '../../types/index.js';
4
3
  import type { Job } from '../queue.js';
5
4
  export declare class PostgresJob<T extends ObjectLiteral = ObjectLiteral> extends EntityWithoutMetadata implements Job<T> {