@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
@@ -0,0 +1,77 @@
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
+ import { Singleton } from '../injector/decorators.js';
8
+ import { inject, injectAll } from '../injector/inject.js';
9
+ import { isDefined } from '../utils/type-guards.js';
10
+ import { LogLevel } from './level.js';
11
+ import { DEFAULT_LOG_LEVEL } from './tokens.js';
12
+ import { LogTransport } from './transport.js';
13
+ let LogManager = class LogManager {
14
+ #transports = injectAll(LogTransport);
15
+ #moduleLevelRules = new Map();
16
+ #moduleLevelCache = new Map();
17
+ #defaultLevel = inject(DEFAULT_LOG_LEVEL, undefined, { optional: true }) ?? LogLevel.Trace;
18
+ log(payload) {
19
+ for (const transport of this.#transports) {
20
+ if (payload.level <= transport.level) {
21
+ transport.log(payload);
22
+ }
23
+ }
24
+ }
25
+ setDefaultLevel(level) {
26
+ this.#defaultLevel = level;
27
+ this.#moduleLevelCache.clear();
28
+ }
29
+ /**
30
+ * Sets the log level for a specific module.
31
+ * @param module The module (e.g., 'Api.Users' or ['Api', 'Users'])
32
+ * @param level The log level to set
33
+ */
34
+ setModuleLevel(module, level) {
35
+ const moduleString = Array.isArray(module) ? module.join('.') : module;
36
+ if (this.#moduleLevelRules.get(moduleString) === level) {
37
+ return;
38
+ }
39
+ this.#moduleLevelRules.set(moduleString, level);
40
+ this.#moduleLevelCache.clear();
41
+ }
42
+ /**
43
+ * Gets the effective log level for a given module path.
44
+ * It finds the most specific rule matching the module path.
45
+ * @param modulePath Array of module names, e.g., ['Api', 'Users']
46
+ * @returns The effective log level
47
+ */
48
+ getModuleLevel(modulePath) {
49
+ if (!isDefined(modulePath) || (modulePath.length == 0)) {
50
+ return this.#defaultLevel;
51
+ }
52
+ const path = Array.isArray(modulePath) ? modulePath.join('.') : modulePath;
53
+ const cachedLevel = this.#moduleLevelCache.get(path);
54
+ if (isDefined(cachedLevel)) {
55
+ return cachedLevel;
56
+ }
57
+ let currentPath = path;
58
+ while (currentPath.length > 0) {
59
+ const level = this.#moduleLevelRules.get(currentPath);
60
+ if (isDefined(level)) {
61
+ this.#moduleLevelCache.set(path, level); // Cache the result for the original full path
62
+ return level;
63
+ }
64
+ const lastDotIndex = currentPath.lastIndexOf('.');
65
+ if (lastDotIndex === -1) {
66
+ break;
67
+ }
68
+ currentPath = currentPath.substring(0, lastDotIndex);
69
+ }
70
+ this.#moduleLevelCache.set(path, this.#defaultLevel);
71
+ return this.#defaultLevel;
72
+ }
73
+ };
74
+ LogManager = __decorate([
75
+ Singleton()
76
+ ], LogManager);
77
+ export { LogManager };
@@ -1,2 +1,2 @@
1
1
  import type { LogLevel } from './level.js';
2
- export declare const LOG_LEVEL: import("../injector/token.js").InjectionToken<LogLevel, never>;
2
+ export declare const DEFAULT_LOG_LEVEL: import("../injector/token.js").InjectionToken<LogLevel, never>;
package/logger/tokens.js CHANGED
@@ -1,2 +1,2 @@
1
1
  import { injectionToken } from '../injector/token.js';
2
- export const LOG_LEVEL = injectionToken('log level');
2
+ export const DEFAULT_LOG_LEVEL = injectionToken('default log level');
@@ -0,0 +1,14 @@
1
+ import type { ProvidersItem } from '../injector/injector.js';
2
+ import type { Resolvable, resolveArgumentType } from '../injector/interfaces.js';
3
+ import type { Provider } from '../injector/provider.js';
4
+ import type { LogPayload } from './formatter.js';
5
+ import { LogLevel } from './level.js';
6
+ export declare class LogTransportOptions {
7
+ level?: LogLevel;
8
+ }
9
+ export declare abstract class LogTransport implements Resolvable<LogTransportOptions> {
10
+ readonly level: LogLevel;
11
+ readonly [resolveArgumentType]: LogTransportOptions;
12
+ abstract log(payload: LogPayload): void;
13
+ }
14
+ export declare function provideLogTransport<T extends LogTransport>(provider: Provider<T>): ProvidersItem;
@@ -0,0 +1,16 @@
1
+ import { inject, injectArgument } from '../injector/inject.js';
2
+ import { LogLevel } from './level.js';
3
+ import { DEFAULT_LOG_LEVEL } from './tokens.js';
4
+ export class LogTransportOptions {
5
+ level;
6
+ }
7
+ export class LogTransport {
8
+ level = injectArgument(this, { optional: true })?.level ?? inject(DEFAULT_LOG_LEVEL, undefined, { optional: true }) ?? LogLevel.Trace;
9
+ }
10
+ export function provideLogTransport(provider) {
11
+ return {
12
+ ...provider,
13
+ provide: LogTransport,
14
+ multi: true,
15
+ };
16
+ }
@@ -0,0 +1,14 @@
1
+ import { type InjectionToken, type Resolvable, type resolveArgumentType } from '../../injector/index.js';
2
+ import type { ProvidersItem } from '../../injector/injector.js';
3
+ import type { LogFormatter, LogPayload } from '../formatter.js';
4
+ import { LogLevel } from '../level.js';
5
+ import { LogTransport, LogTransportOptions } from '../transport.js';
6
+ export declare class ConsoleLogTransportOptions extends LogTransportOptions {
7
+ formatter: InjectionToken<LogFormatter>;
8
+ }
9
+ export declare class ConsoleLogTransport extends LogTransport implements Resolvable<ConsoleLogTransportOptions> {
10
+ #private;
11
+ readonly [resolveArgumentType]: ConsoleLogTransportOptions;
12
+ log(payload: LogPayload): void;
13
+ }
14
+ export declare function provideConsoleLogTransport(formatter: InjectionToken<LogFormatter>, level?: LogLevel): ProvidersItem;
@@ -0,0 +1,36 @@
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
+ import { Singleton } from '../../injector/decorators.js';
8
+ import { inject, injectArgument } from '../../injector/index.js';
9
+ import { LogLevel } from '../level.js';
10
+ import { LogTransport, LogTransportOptions, provideLogTransport } from '../transport.js';
11
+ export class ConsoleLogTransportOptions extends LogTransportOptions {
12
+ formatter;
13
+ }
14
+ const consoleLevelFuncMap = {
15
+ [LogLevel.Error]: 'error',
16
+ [LogLevel.Warn]: 'warn',
17
+ [LogLevel.Info]: 'info',
18
+ [LogLevel.Verbose]: 'info',
19
+ [LogLevel.Debug]: 'debug',
20
+ [LogLevel.Trace]: 'debug',
21
+ };
22
+ let ConsoleLogTransport = class ConsoleLogTransport extends LogTransport {
23
+ #formatter = inject(injectArgument(this).formatter);
24
+ log(payload) {
25
+ const message = this.#formatter.format(payload);
26
+ const consoleFunc = consoleLevelFuncMap[payload.level];
27
+ console[consoleFunc](message);
28
+ }
29
+ };
30
+ ConsoleLogTransport = __decorate([
31
+ Singleton()
32
+ ], ConsoleLogTransport);
33
+ export { ConsoleLogTransport };
34
+ export function provideConsoleLogTransport(formatter, level) {
35
+ return provideLogTransport({ useToken: ConsoleLogTransport, defaultArgument: { formatter, level } });
36
+ }
@@ -0,0 +1 @@
1
+ export * from './console.js';
@@ -0,0 +1 @@
1
+ export * from './console.js';
@@ -1,4 +1,3 @@
1
- import type { Disposable } from '../../disposable/disposable.js';
2
1
  import { MailClient, MailClientConfig } from '../mail.client.js';
3
2
  import type { MailData, MailSendResult } from '../models/index.js';
4
3
  export declare class NodemailerMailClient extends MailClient implements Disposable {
@@ -32,13 +32,13 @@ let NodemailerMailClient = class NodemailerMailClient extends MailClient {
32
32
  subject: data.subject,
33
33
  text: data.content.text,
34
34
  html: data.content.html,
35
- headers: data.headers
35
+ headers: data.headers,
36
36
  });
37
37
  return {
38
38
  messageId: result.messageId,
39
39
  accepted: result.accepted,
40
40
  rejected: result.rejected,
41
- pending: result.pending
41
+ pending: result.pending,
42
42
  };
43
43
  }
44
44
  getTransport(config) {
@@ -62,11 +62,13 @@ function convertConfig(config) {
62
62
  host: config.host,
63
63
  port: config.port,
64
64
  secure: config.secure ?? (config.port == 465),
65
- auth: isUndefined(config.auth) ? undefined : {
66
- type: 'login',
67
- user: config.auth.user,
68
- pass: config.auth.password
69
- }
65
+ auth: isUndefined(config.auth)
66
+ ? undefined
67
+ : {
68
+ type: 'login',
69
+ user: config.auth.user,
70
+ pass: config.auth.password,
71
+ },
70
72
  };
71
73
  }
72
74
  /**
@@ -36,8 +36,8 @@ LocalMessageBus = __decorate([
36
36
  useFactory: (argument, context) => {
37
37
  const channel = assertStringPass(argument, 'LocalMessageBus resolve argument must be a string (channel)');
38
38
  return context.resolve(LocalMessageBusProvider).get(channel);
39
- }
40
- }
39
+ },
40
+ },
41
41
  }),
42
42
  __metadata("design:paramtypes", [Subject, Logger])
43
43
  ], LocalMessageBus);
@@ -1,7 +1,6 @@
1
1
  import type { Observable } from 'rxjs';
2
- import type { Logger } from '../logger/index.js';
3
2
  import { CancellationToken } from '../cancellation/token.js';
4
- import { disposeAsync } from '../disposable/disposable.js';
3
+ import type { Logger } from '../logger/index.js';
5
4
  import { MessageBus } from './message-bus.js';
6
5
  export declare abstract class MessageBusBase<T> extends MessageBus<T> {
7
6
  private readonly logger;
@@ -16,7 +15,7 @@ export declare abstract class MessageBusBase<T> extends MessageBus<T> {
16
15
  constructor(logger: Logger);
17
16
  publishAndForget(message: T): void;
18
17
  publish(message: T): Promise<void>;
19
- [disposeAsync](): Promise<void>;
18
+ [Symbol.asyncDispose](): Promise<void>;
20
19
  /**
21
20
  * publish messages to other instances
22
21
  * @param message message to send to other instances
@@ -1,7 +1,6 @@
1
1
  import { defer, merge, share, Subject, takeUntil } from 'rxjs';
2
- import { tryIgnoreLogAsync } from '../utils/try-ignore.js';
3
2
  import { CancellationToken } from '../cancellation/token.js';
4
- import { disposeAsync } from '../disposable/disposable.js';
3
+ import { tryIgnoreLogAsync } from '../utils/try-ignore.js';
5
4
  import { MessageBus } from './message-bus.js';
6
5
  export class MessageBusBase extends MessageBus {
7
6
  logger;
@@ -18,21 +17,21 @@ export class MessageBusBase extends MessageBus {
18
17
  this.allMessages$ = merge(this.messages$, this.publishSubject);
19
18
  }
20
19
  publishAndForget(message) {
21
- void tryIgnoreLogAsync(this.logger, async () => this.publish(message));
20
+ void tryIgnoreLogAsync(this.logger, async () => await this.publish(message));
22
21
  }
23
22
  async publish(message) {
24
23
  if (this.disposeToken.isSet) {
25
24
  throw new Error('message-bus is disposed');
26
25
  }
27
26
  this.publishSubject.next(message);
28
- return this._publish(message);
27
+ await this._publish(message);
29
28
  }
30
- async [disposeAsync]() {
29
+ async [Symbol.asyncDispose]() {
31
30
  if (this.disposeToken.isSet) {
32
31
  throw new Error('message-bus is disposed');
33
32
  }
34
33
  this.disposeToken.set();
35
34
  this.publishSubject.complete();
36
- return this._dispose();
35
+ await this._dispose();
37
36
  }
38
37
  }
@@ -1,6 +1,5 @@
1
1
  import type { Observable } from 'rxjs';
2
2
  import { type Resolvable, resolveArgumentType } from '../injector/interfaces.js';
3
- import { type AsyncDisposable, disposeAsync } from '../disposable/disposable.js';
4
3
  export type MessageBusArgument = string;
5
4
  export declare abstract class MessageBus<T> implements AsyncDisposable, Resolvable<MessageBusArgument> {
6
5
  readonly [resolveArgumentType]: string;
@@ -11,5 +10,5 @@ export declare abstract class MessageBus<T> implements AsyncDisposable, Resolvab
11
10
  dispose(): Promise<void>;
12
11
  abstract publish(message: T): Promise<void>;
13
12
  abstract publishAndForget(message: T): void;
14
- abstract [disposeAsync](): Promise<void>;
13
+ abstract [Symbol.asyncDispose](): Promise<void>;
15
14
  }
@@ -1,7 +1,6 @@
1
1
  import { resolveArgumentType } from '../injector/interfaces.js';
2
- import { disposeAsync } from '../disposable/disposable.js';
3
2
  export class MessageBus {
4
3
  async dispose() {
5
- await this[disposeAsync]();
4
+ await this[Symbol.asyncDispose]();
6
5
  }
7
6
  }
package/module/index.d.ts CHANGED
@@ -3,7 +3,5 @@
3
3
  *
4
4
  * @module Module
5
5
  */
6
- export * from './module-base.js';
7
- export * from './module-metric-reporter.js';
8
6
  export * from './module.js';
9
7
  export * from './modules/index.js';
package/module/index.js CHANGED
@@ -3,7 +3,5 @@
3
3
  *
4
4
  * @module Module
5
5
  */
6
- export * from './module-base.js';
7
- export * from './module-metric-reporter.js';
8
6
  export * from './module.js';
9
7
  export * from './modules/index.js';
@@ -1,23 +1,22 @@
1
- import type { StringMap } from '../types/index.js';
2
- export declare enum ModuleMetricType {
3
- Counter = 0,
4
- Gauge = 1
5
- }
6
- export type ModuleMetric = {
7
- type: ModuleMetricType;
8
- labels?: string[];
9
- getValue(): number;
1
+ import type { CancellationSignal } from '../cancellation/index.js';
2
+ import { CancellationToken } from '../cancellation/index.js';
3
+ import { type EnumType } from '../enumeration/enumeration.js';
4
+ export declare const ModuleState: {
5
+ readonly Running: 0;
6
+ readonly Stopping: 1;
7
+ readonly Stopped: 2;
8
+ readonly Erroneous: 3;
10
9
  };
11
- export declare enum ModuleState {
12
- Running = 0,
13
- Stopping = 1,
14
- Stopped = 2,
15
- Erroneous = 3
16
- }
17
- export interface Module {
10
+ export type ModuleState = EnumType<typeof ModuleState>;
11
+ export declare abstract class Module {
12
+ private runPromise;
13
+ private _state;
14
+ protected readonly cancellationToken: CancellationToken;
18
15
  readonly name: string;
19
- readonly state: ModuleState;
20
- readonly metrics: StringMap<ModuleMetric>;
16
+ get state(): ModuleState;
17
+ private get stateString();
18
+ constructor(name: string);
21
19
  run(): Promise<void>;
22
20
  stop(): Promise<void>;
21
+ protected abstract _run(cancellationSignal: CancellationSignal): Promise<void>;
23
22
  }
package/module/module.js CHANGED
@@ -1,12 +1,47 @@
1
- export var ModuleMetricType;
2
- (function (ModuleMetricType) {
3
- ModuleMetricType[ModuleMetricType["Counter"] = 0] = "Counter";
4
- ModuleMetricType[ModuleMetricType["Gauge"] = 1] = "Gauge";
5
- })(ModuleMetricType || (ModuleMetricType = {}));
6
- export var ModuleState;
7
- (function (ModuleState) {
8
- ModuleState[ModuleState["Running"] = 0] = "Running";
9
- ModuleState[ModuleState["Stopping"] = 1] = "Stopping";
10
- ModuleState[ModuleState["Stopped"] = 2] = "Stopped";
11
- ModuleState[ModuleState["Erroneous"] = 3] = "Erroneous";
12
- })(ModuleState || (ModuleState = {}));
1
+ import { CancellationToken } from '../cancellation/index.js';
2
+ import { defineEnum } from '../enumeration/enumeration.js';
3
+ import { enumValueName } from '../utils/enum.js';
4
+ export const ModuleState = defineEnum('ModuleState', {
5
+ Running: 0,
6
+ Stopping: 1,
7
+ Stopped: 2,
8
+ Erroneous: 3,
9
+ });
10
+ export class Module {
11
+ runPromise;
12
+ _state;
13
+ cancellationToken;
14
+ name;
15
+ get state() {
16
+ return this._state;
17
+ }
18
+ get stateString() {
19
+ return enumValueName(ModuleState, this.state).toLowerCase();
20
+ }
21
+ constructor(name) {
22
+ this.name = name;
23
+ this.runPromise = Promise.resolve();
24
+ this._state = ModuleState.Stopped;
25
+ this.cancellationToken = new CancellationToken();
26
+ }
27
+ async run() {
28
+ if (this._state != ModuleState.Stopped) {
29
+ throw new Error(`cannot start module, it is ${this.stateString}`);
30
+ }
31
+ this.cancellationToken.unset();
32
+ try {
33
+ this._state = ModuleState.Running;
34
+ this.runPromise = this._run(this.cancellationToken);
35
+ await this.runPromise;
36
+ this._state = ModuleState.Stopped;
37
+ }
38
+ catch (error) {
39
+ this._state = ModuleState.Erroneous;
40
+ throw error;
41
+ }
42
+ }
43
+ async stop() {
44
+ this.cancellationToken.set();
45
+ await this.runPromise.catch(() => { });
46
+ }
47
+ }
@@ -1,10 +1,10 @@
1
1
  import type { CancellationSignal } from '../../cancellation/index.js';
2
- import { ModuleBase } from '../module-base.js';
3
- import type { Module } from '../module.js';
2
+ import type { Resolvable, resolveArgumentType } from '../../injector/interfaces.js';
3
+ import { Module } from '../module.js';
4
4
  export type FunctionModuleFunction = (cancellationToken: CancellationSignal) => void | Promise<void>;
5
- export declare class FunctionModule extends ModuleBase implements Module {
6
- private readonly fn;
7
- readonly metrics: {};
8
- constructor(fn: FunctionModuleFunction, name?: string);
5
+ export declare class FunctionModule extends Module implements Resolvable<FunctionModuleFunction> {
6
+ #private;
7
+ readonly [resolveArgumentType]: FunctionModuleFunction;
8
+ constructor();
9
9
  protected _run(cancellationSignal: CancellationSignal): Promise<void>;
10
10
  }
@@ -1,12 +1,28 @@
1
- import { ModuleBase } from '../module-base.js';
2
- export class FunctionModule extends ModuleBase {
3
- fn;
4
- metrics = {};
5
- constructor(fn, name = fn.name) {
6
- super(name);
7
- this.fn = fn;
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 { Singleton } from '../../injector/decorators.js';
11
+ import { injectArgument } from '../../injector/inject.js';
12
+ import { Module } from '../module.js';
13
+ let FunctionModule = class FunctionModule extends Module {
14
+ #fn;
15
+ constructor() {
16
+ const fn = injectArgument(null);
17
+ super(fn.name);
18
+ this.#fn = fn;
8
19
  }
9
20
  async _run(cancellationSignal) {
10
- await this.fn(cancellationSignal);
21
+ await this.#fn(cancellationSignal);
11
22
  }
12
- }
23
+ };
24
+ FunctionModule = __decorate([
25
+ Singleton(),
26
+ __metadata("design:paramtypes", [])
27
+ ], FunctionModule);
28
+ export { FunctionModule };
@@ -1,24 +1,16 @@
1
1
  import type { CancellationSignal } from '../../cancellation/index.js';
2
2
  import type { Resolvable, resolveArgumentType } from '../../injector/interfaces.js';
3
- import { ModuleBase } from '../module-base.js';
4
- import type { Module } from '../module.js';
5
- import { ModuleMetricType } from '../module.js';
3
+ import { Module } from '../module.js';
6
4
  export type WebServerModuleConfiguration = {
7
5
  port: number;
8
6
  };
9
7
  export declare const webServerModuleConfiguration: WebServerModuleConfiguration;
10
- export declare class WebServerModule extends ModuleBase implements Module, Resolvable<WebServerModuleConfiguration> {
8
+ export declare class WebServerModule extends Module implements Resolvable<WebServerModuleConfiguration> {
11
9
  private readonly config;
12
10
  private readonly httpServer;
13
11
  private readonly apiGateway;
14
12
  private readonly apiControllers;
15
13
  private initialized;
16
- readonly metrics: {
17
- connectedSockets: {
18
- type: ModuleMetricType;
19
- getValue: () => number;
20
- };
21
- };
22
14
  readonly [resolveArgumentType]: WebServerModuleConfiguration;
23
15
  constructor();
24
16
  initialize(): void;
@@ -8,27 +8,19 @@ var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
10
  import { API_CONTROLLERS, ApiGateway, getApiControllerDefinition } from '../../api/server/index.js';
11
- import { disposeAsync } from '../../disposable/disposable.js';
12
11
  import { HttpServer } from '../../http/server/http-server.js';
13
12
  import { Singleton } from '../../injector/decorators.js';
14
13
  import { inject, injectArgument } from '../../injector/inject.js';
15
- import { ModuleBase } from '../module-base.js';
16
- import { ModuleMetricType } from '../module.js';
14
+ import { Module } from '../module.js';
17
15
  export const webServerModuleConfiguration = {
18
16
  port: 8000,
19
17
  };
20
- let WebServerModule = class WebServerModule extends ModuleBase {
18
+ let WebServerModule = class WebServerModule extends Module {
21
19
  config = injectArgument(this);
22
20
  httpServer = inject(HttpServer);
23
21
  apiGateway = inject(ApiGateway);
24
22
  apiControllers = inject(API_CONTROLLERS);
25
23
  initialized = false;
26
- metrics = {
27
- connectedSockets: {
28
- type: ModuleMetricType.Gauge,
29
- getValue: () => this.httpServer.connectedSocketsCount,
30
- },
31
- };
32
24
  constructor() {
33
25
  super('WebServer');
34
26
  }
@@ -45,7 +37,7 @@ let WebServerModule = class WebServerModule extends ModuleBase {
45
37
  this.initialize();
46
38
  await this.httpServer.listen(this.config.port);
47
39
  const closePromise = cancellationSignal.$set.then(async () => {
48
- await this.httpServer[disposeAsync]();
40
+ await this.httpServer[Symbol.asyncDispose]();
49
41
  });
50
42
  for await (const context of this.httpServer) {
51
43
  void this.apiGateway.handleHttpServerRequestContext(context);
@@ -4,9 +4,7 @@
4
4
  * @module OpenID Connect
5
5
  */
6
6
  export * from './cached-oidc-configuration.service.js';
7
- export * from './mongo-oidc-state.repository.js';
8
7
  export * from './oidc-configuration.service.js';
9
8
  export * from './oidc-state.model.js';
10
- export * from './oidc-state.repository.js';
11
9
  export * from './oidc.service-model.js';
12
10
  export * from './oidc.service.js';
@@ -7,10 +7,8 @@ import { Injector } from '../injector/injector.js';
7
7
  import { CachedOidcConfigurationService } from './cached-oidc-configuration.service.js';
8
8
  import { OidcConfigurationService } from './oidc-configuration.service.js';
9
9
  export * from './cached-oidc-configuration.service.js';
10
- export * from './mongo-oidc-state.repository.js';
11
10
  export * from './oidc-configuration.service.js';
12
11
  export * from './oidc-state.model.js';
13
- export * from './oidc-state.repository.js';
14
12
  export * from './oidc.service-model.js';
15
13
  export * from './oidc.service.js';
16
14
  Injector.registerSingleton(OidcConfigurationService, { useToken: CachedOidcConfigurationService });
@@ -1,11 +1,10 @@
1
- import type { Entity, NewEntity } from '../database/index.js';
2
- export type OidcState<Data = any> = Entity & {
1
+ import { EntityWithoutMetadata, Json } from '../orm/index.js';
2
+ export declare class OidcState<Data> extends EntityWithoutMetadata {
3
3
  value: string;
4
4
  codeVerifier: string;
5
5
  endpoint: string;
6
6
  clientId: string;
7
7
  clientSecret: string;
8
8
  expiration: number;
9
- data: Data;
10
- };
11
- export type NewOidcState<Data = any> = NewEntity<OidcState<Data>>;
9
+ data: Json<Data>;
10
+ }