@tstdl/base 0.92.166 → 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.
- package/api/server/middlewares/content-type.middleware.js +1 -1
- package/application/application.d.ts +12 -18
- package/application/application.js +48 -69
- package/application/index.d.ts +1 -5
- package/application/index.js +1 -5
- package/application/providers.d.ts +10 -0
- package/application/providers.js +54 -0
- package/authentication/client/authentication.service.d.ts +1 -3
- package/authentication/client/authentication.service.js +4 -5
- package/browser/browser-context-controller.d.ts +2 -4
- package/browser/browser-context-controller.js +5 -6
- package/browser/browser-controller.d.ts +2 -4
- package/browser/browser-controller.js +3 -4
- package/browser/browser.service.d.ts +1 -3
- package/browser/browser.service.js +1 -2
- package/browser/page-controller.d.ts +2 -4
- package/browser/page-controller.js +7 -8
- package/browser/utils.js +3 -3
- package/cancellation/token.d.ts +104 -41
- package/cancellation/token.js +125 -54
- package/core.d.ts +1 -13
- package/core.js +1 -46
- package/disposable/disposable.d.ts +0 -8
- package/disposable/disposable.js +1 -3
- package/disposable/index.d.ts +0 -6
- package/disposable/index.js +0 -6
- package/disposable/using.d.ts +0 -1
- package/disposable/using.js +2 -3
- package/distributed-loop/distributed-loop.js +2 -2
- package/errors/utils.js +4 -1
- package/examples/api/authentication.js +11 -5
- package/examples/api/basic-overview.js +17 -12
- package/examples/api/custom-authentication.js +13 -7
- package/examples/api/streaming.js +15 -12
- package/examples/browser/basic.js +6 -3
- package/examples/document-management/main.js +6 -3
- package/examples/http/client.js +7 -3
- package/examples/mail/basic.js +9 -7
- package/examples/pdf/basic.js +8 -6
- package/examples/template/basic.js +7 -5
- package/http/client/http-client-request.d.ts +1 -2
- package/http/client/http-client-request.js +1 -2
- package/http/server/http-server.d.ts +1 -3
- package/http/server/http-server.js +0 -1
- package/http/server/node/node-http-server.d.ts +1 -2
- package/http/server/node/node-http-server.js +1 -2
- package/import.js +1 -1
- package/injector/injector.d.ts +1 -1
- package/injector/types.d.ts +3 -4
- package/lock/lock.d.ts +40 -21
- package/lock/lock.js +74 -1
- package/lock/postgres/drizzle/0000_busy_tattoo.sql +7 -0
- package/lock/postgres/drizzle/meta/0000_snapshot.json +65 -0
- package/lock/postgres/drizzle/meta/_journal.json +13 -0
- package/lock/postgres/drizzle.config.js +11 -0
- package/lock/postgres/index.d.ts +2 -0
- package/lock/postgres/index.js +2 -0
- package/lock/postgres/lock.d.ts +14 -0
- package/lock/postgres/lock.js +127 -0
- package/lock/postgres/models/index.d.ts +2 -0
- package/lock/postgres/models/index.js +2 -0
- package/lock/postgres/models/lock.model.d.ts +7 -0
- package/{examples/orm/user.model.js → lock/postgres/models/lock.model.js} +22 -30
- package/lock/postgres/models/schemas.d.ts +3 -0
- package/lock/postgres/models/schemas.js +4 -0
- package/lock/postgres/module.d.ts +6 -0
- package/lock/postgres/module.js +26 -0
- package/lock/postgres/provider.d.ts +6 -0
- package/lock/postgres/provider.js +29 -0
- package/lock/provider.d.ts +12 -2
- package/lock/provider.js +24 -1
- package/lock/web/web-lock.d.ts +4 -3
- package/lock/web/web-lock.js +49 -42
- package/lock/web/web-lock.provider.d.ts +0 -3
- package/lock/web/web-lock.provider.js +5 -22
- package/logger/formatter.d.ts +13 -0
- package/logger/formatter.js +3 -0
- package/logger/formatters/index.d.ts +2 -0
- package/logger/formatters/index.js +2 -0
- package/logger/formatters/json.d.ts +5 -0
- package/logger/formatters/json.js +33 -0
- package/logger/formatters/pretty-print.d.ts +5 -0
- package/logger/formatters/pretty-print.js +55 -0
- package/logger/index.d.ts +5 -2
- package/logger/index.js +5 -2
- package/logger/level.d.ts +10 -8
- package/logger/level.js +9 -9
- package/logger/logger.d.ts +21 -30
- package/logger/logger.js +98 -26
- package/logger/manager.d.ts +20 -0
- package/logger/manager.js +77 -0
- package/logger/tokens.d.ts +1 -1
- package/logger/tokens.js +1 -1
- package/logger/transport.d.ts +14 -0
- package/logger/transport.js +16 -0
- package/logger/transports/console.d.ts +14 -0
- package/logger/transports/console.js +36 -0
- package/logger/transports/index.d.ts +1 -0
- package/logger/transports/index.js +1 -0
- package/mail/clients/nodemailer.mail-client.d.ts +0 -1
- package/mail/clients/nodemailer.mail-client.js +9 -7
- package/message-bus/local/local-message-bus.js +2 -2
- package/message-bus/message-bus-base.d.ts +2 -3
- package/message-bus/message-bus-base.js +5 -6
- package/message-bus/message-bus.d.ts +1 -2
- package/message-bus/message-bus.js +1 -2
- package/module/index.d.ts +0 -2
- package/module/index.js +0 -2
- package/module/module.d.ts +17 -18
- package/module/module.js +47 -12
- package/module/modules/function.module.d.ts +6 -6
- package/module/modules/function.module.js +25 -9
- package/module/modules/web-server.module.d.ts +2 -10
- package/module/modules/web-server.module.js +3 -11
- package/openid-connect/index.d.ts +0 -2
- package/openid-connect/index.js +0 -2
- package/openid-connect/oidc-state.model.d.ts +4 -5
- package/openid-connect/oidc-state.model.js +51 -1
- package/openid-connect/oidc.service-model.d.ts +1 -1
- package/openid-connect/oidc.service.d.ts +2 -6
- package/openid-connect/oidc.service.js +24 -37
- package/orm/decorators.d.ts +10 -1
- package/orm/decorators.js +8 -0
- package/orm/server/repository.d.ts +3 -1
- package/orm/server/repository.js +32 -3
- package/package.json +17 -28
- package/pdf/pdf.service.js +9 -9
- package/pool/pool.d.ts +1 -3
- package/pool/pool.js +3 -4
- package/queue/postgres/job.model.d.ts +1 -2
- package/queue/postgres/job.model.js +1 -2
- package/queue/postgres/module.js +1 -1
- package/threading/thread-pool.d.ts +1 -3
- package/threading/thread-pool.js +7 -8
- package/utils/format-error.d.ts +7 -0
- package/utils/format-error.js +59 -17
- package/utils/index.d.ts +1 -0
- package/utils/index.js +1 -0
- package/utils/object/dereference.d.ts +51 -19
- package/utils/object/dereference.js +52 -43
- package/utils/timing.js +2 -2
- package/utils/try-chain.d.ts +22 -0
- package/utils/try-chain.js +46 -0
- package/database/entity-repository.d.ts +0 -50
- package/database/entity-repository.js +0 -3
- package/database/entity.d.ts +0 -7
- package/database/entity.js +0 -1
- package/database/id.d.ts +0 -1
- package/database/id.js +0 -9
- package/database/index.d.ts +0 -11
- package/database/index.js +0 -11
- package/database/module.d.ts +0 -8
- package/database/module.js +0 -11
- package/database/mongo/classes.d.ts +0 -21
- package/database/mongo/classes.js +0 -26
- package/database/mongo/index.d.ts +0 -15
- package/database/mongo/index.js +0 -15
- package/database/mongo/model/document.d.ts +0 -29
- package/database/mongo/model/document.js +0 -63
- package/database/mongo/model/index.d.ts +0 -1
- package/database/mongo/model/index.js +0 -1
- package/database/mongo/module.d.ts +0 -8
- package/database/mongo/module.js +0 -68
- package/database/mongo/mongo-base.repository.d.ts +0 -103
- package/database/mongo/mongo-base.repository.js +0 -263
- package/database/mongo/mongo-bulk.d.ts +0 -35
- package/database/mongo/mongo-bulk.js +0 -90
- package/database/mongo/mongo-entity-repository.d.ts +0 -98
- package/database/mongo/mongo-entity-repository.js +0 -278
- package/database/mongo/operations.d.ts +0 -10
- package/database/mongo/operations.js +0 -54
- package/database/mongo/query-converter.d.ts +0 -6
- package/database/mongo/query-converter.js +0 -83
- package/database/mongo/simple-entity-repository.d.ts +0 -7
- package/database/mongo/simple-entity-repository.js +0 -6
- package/database/mongo/types.d.ts +0 -50
- package/database/mongo/types.js +0 -3
- package/database/query.d.ts +0 -121
- package/database/query.js +0 -7
- package/database/utils.d.ts +0 -2
- package/database/utils.js +0 -3
- package/disposable/async-disposer.d.ts +0 -35
- package/disposable/async-disposer.js +0 -125
- package/examples/orm/drizzle.config.js +0 -6
- package/examples/orm/schemas.d.ts +0 -3
- package/examples/orm/schemas.js +0 -4
- package/examples/orm/test.d.ts +0 -1
- package/examples/orm/test.js +0 -11
- package/examples/orm/user.model.d.ts +0 -13
- package/key-value-store/mongo/index.d.ts +0 -6
- package/key-value-store/mongo/index.js +0 -6
- package/key-value-store/mongo/module.d.ts +0 -8
- package/key-value-store/mongo/module.js +0 -18
- package/key-value-store/mongo/mongo-key-value-store.provider.d.ts +0 -8
- package/key-value-store/mongo/mongo-key-value-store.provider.js +0 -26
- package/key-value-store/mongo/mongo-key-value.model.d.ts +0 -7
- package/key-value-store/mongo/mongo-key-value.model.js +0 -1
- package/key-value-store/mongo/mongo-key-value.repository.d.ts +0 -10
- package/key-value-store/mongo/mongo-key-value.repository.js +0 -31
- package/key-value-store/mongo/mongo-key-value.store.d.ts +0 -15
- package/key-value-store/mongo/mongo-key-value.store.js +0 -82
- package/key-value-store/mongo/tokens.d.ts +0 -3
- package/key-value-store/mongo/tokens.js +0 -2
- package/lock/mongo/index.d.ts +0 -5
- package/lock/mongo/index.js +0 -5
- package/lock/mongo/lock.d.ts +0 -14
- package/lock/mongo/lock.js +0 -125
- package/lock/mongo/model.d.ts +0 -6
- package/lock/mongo/model.js +0 -1
- package/lock/mongo/module.d.ts +0 -12
- package/lock/mongo/module.js +0 -20
- package/lock/mongo/mongo-lock-repository.d.ts +0 -14
- package/lock/mongo/mongo-lock-repository.js +0 -67
- package/lock/mongo/provider.d.ts +0 -8
- package/lock/mongo/provider.js +0 -36
- package/logger/console/index.d.ts +0 -1
- package/logger/console/index.js +0 -1
- package/logger/console/logger.d.ts +0 -11
- package/logger/console/logger.js +0 -64
- package/logger/noop/index.d.ts +0 -1
- package/logger/noop/index.js +0 -1
- package/logger/noop/logger.d.ts +0 -9
- package/logger/noop/logger.js +0 -21
- package/migration/index.d.ts +0 -9
- package/migration/index.js +0 -9
- package/migration/migration-state-repository.d.ts +0 -4
- package/migration/migration-state-repository.js +0 -3
- package/migration/migration-state.d.ts +0 -6
- package/migration/migration-state.js +0 -1
- package/migration/migrator.d.ts +0 -23
- package/migration/migrator.js +0 -76
- package/migration/mongo/index.d.ts +0 -2
- package/migration/mongo/index.js +0 -2
- package/migration/mongo/migration-state-repository.d.ts +0 -11
- package/migration/mongo/migration-state-repository.js +0 -32
- package/migration/mongo/module.d.ts +0 -12
- package/migration/mongo/module.js +0 -17
- package/module/module-base.d.ts +0 -18
- package/module/module-base.js +0 -40
- package/module/module-metric-reporter.d.ts +0 -29
- package/module/module-metric-reporter.js +0 -62
- package/openid-connect/mongo-oidc-state.repository.d.ts +0 -21
- package/openid-connect/mongo-oidc-state.repository.js +0 -52
- package/openid-connect/oidc-state.repository.d.ts +0 -4
- package/openid-connect/oidc-state.repository.js +0 -3
- package/process-shutdown.d.ts +0 -9
- package/process-shutdown.js +0 -65
- package/queue/mongo/index.d.ts +0 -4
- package/queue/mongo/index.js +0 -4
- package/queue/mongo/job.d.ts +0 -12
- package/queue/mongo/job.js +0 -1
- package/queue/mongo/mongo-job.repository.d.ts +0 -13
- package/queue/mongo/mongo-job.repository.js +0 -54
- package/queue/mongo/queue.d.ts +0 -38
- package/queue/mongo/queue.js +0 -266
- package/queue/mongo/queue.provider.d.ts +0 -18
- package/queue/mongo/queue.provider.js +0 -38
- package/search-index/elastic/config.d.ts +0 -8
- package/search-index/elastic/config.js +0 -26
- package/search-index/elastic/index.d.ts +0 -8
- package/search-index/elastic/index.js +0 -8
- package/search-index/elastic/keyword-rewriter.d.ts +0 -8
- package/search-index/elastic/keyword-rewriter.js +0 -18
- package/search-index/elastic/model/elastic-query.d.ts +0 -16
- package/search-index/elastic/model/elastic-query.js +0 -1
- package/search-index/elastic/model/index-mapping.d.ts +0 -26
- package/search-index/elastic/model/index-mapping.js +0 -4
- package/search-index/elastic/model/index.d.ts +0 -3
- package/search-index/elastic/model/index.js +0 -3
- package/search-index/elastic/model/sort.d.ts +0 -8
- package/search-index/elastic/model/sort.js +0 -1
- package/search-index/elastic/module.d.ts +0 -10
- package/search-index/elastic/module.js +0 -49
- package/search-index/elastic/query-builder/boolean-query-builder.d.ts +0 -11
- package/search-index/elastic/query-builder/boolean-query-builder.js +0 -52
- package/search-index/elastic/query-builder/index.d.ts +0 -1
- package/search-index/elastic/query-builder/index.js +0 -1
- package/search-index/elastic/query-converter.d.ts +0 -9
- package/search-index/elastic/query-converter.js +0 -183
- package/search-index/elastic/search-index.d.ts +0 -30
- package/search-index/elastic/search-index.js +0 -144
- package/search-index/elastic/sort-converter.d.ts +0 -4
- package/search-index/elastic/sort-converter.js +0 -14
- package/search-index/elastic/types.d.ts +0 -5
- package/search-index/elastic/types.js +0 -1
- package/search-index/error.d.ts +0 -10
- package/search-index/error.js +0 -14
- package/search-index/index.d.ts +0 -3
- package/search-index/index.js +0 -3
- package/search-index/memory/index.d.ts +0 -1
- package/search-index/memory/index.js +0 -1
- package/search-index/memory/memory-search-index.d.ts +0 -19
- package/search-index/memory/memory-search-index.js +0 -144
- package/search-index/search-index.d.ts +0 -46
- package/search-index/search-index.js +0 -31
- package/search-index/search-result.d.ts +0 -12
- package/search-index/search-result.js +0 -1
- package/theme/adapters/css-adapter.d.ts +0 -5
- package/theme/adapters/css-adapter.js +0 -29
- package/theme/adapters/index.d.ts +0 -2
- package/theme/adapters/index.js +0 -2
- package/theme/adapters/tailwind-adapter.d.ts +0 -18
- package/theme/adapters/tailwind-adapter.js +0 -32
- package/theme/index.d.ts +0 -1
- package/theme/index.js +0 -1
- package/theme/theme-service.d.ts +0 -43
- package/theme/theme-service.js +0 -128
- /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 };
|
package/logger/tokens.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { LogLevel } from './level.js';
|
|
2
|
-
export declare const
|
|
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
|
|
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)
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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 {
|
|
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
|
-
[
|
|
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 {
|
|
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
|
-
|
|
27
|
+
await this._publish(message);
|
|
29
28
|
}
|
|
30
|
-
async [
|
|
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
|
-
|
|
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 [
|
|
13
|
+
abstract [Symbol.asyncDispose](): Promise<void>;
|
|
15
14
|
}
|
package/module/index.d.ts
CHANGED
package/module/index.js
CHANGED
package/module/module.d.ts
CHANGED
|
@@ -1,23 +1,22 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
20
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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 {
|
|
3
|
-
import
|
|
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
|
|
6
|
-
private
|
|
7
|
-
readonly
|
|
8
|
-
constructor(
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
|
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 {
|
|
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
|
|
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 {
|
|
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
|
|
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[
|
|
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';
|
package/openid-connect/index.js
CHANGED
|
@@ -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
|
|
2
|
-
export
|
|
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
|
+
}
|