@privateaim/server-kit 0.8.16 → 0.8.18
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/CHANGELOG.md +39 -0
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/index.cjs +165 -142
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +156 -135
- package/dist/index.mjs.map +1 -1
- package/dist/services/entity-event/handlers/index.d.ts +3 -0
- package/dist/services/entity-event/handlers/index.d.ts.map +1 -0
- package/dist/services/entity-event/handlers/redis/helpers.d.ts +2 -0
- package/dist/services/entity-event/handlers/redis/helpers.d.ts.map +1 -0
- package/dist/services/entity-event/handlers/redis/index.d.ts.map +1 -0
- package/dist/services/entity-event/handlers/redis/module.d.ts +8 -0
- package/dist/services/entity-event/handlers/redis/module.d.ts.map +1 -0
- package/dist/services/entity-event/handlers/socket/index.d.ts +2 -0
- package/dist/services/entity-event/handlers/socket/index.d.ts.map +1 -0
- package/dist/services/entity-event/handlers/socket/module.d.ts +10 -0
- package/dist/services/entity-event/handlers/socket/module.d.ts.map +1 -0
- package/dist/services/entity-event/index.d.ts +5 -0
- package/dist/services/entity-event/index.d.ts.map +1 -0
- package/dist/services/entity-event/module.d.ts +10 -0
- package/dist/services/{domain-event → entity-event}/module.d.ts.map +1 -1
- package/dist/services/entity-event/singleton.d.ts +5 -0
- package/dist/services/entity-event/singleton.d.ts.map +1 -0
- package/dist/services/entity-event/types.d.ts +38 -0
- package/dist/services/entity-event/types.d.ts.map +1 -0
- package/dist/services/entity-event/utils.d.ts +2 -0
- package/dist/services/entity-event/utils.d.ts.map +1 -0
- package/dist/services/index.d.ts +1 -1
- package/dist/services/logger/index.d.ts +1 -0
- package/dist/services/logger/index.d.ts.map +1 -1
- package/dist/services/logger/module.d.ts +1 -2
- package/dist/services/logger/module.d.ts.map +1 -1
- package/dist/services/logger/singleton.d.ts +1 -1
- package/dist/services/logger/transports/console.d.ts +8 -0
- package/dist/services/logger/transports/console.d.ts.map +1 -0
- package/dist/services/logger/transports/index.d.ts +3 -0
- package/dist/services/logger/transports/index.d.ts.map +1 -0
- package/dist/services/logger/transports/memory.d.ts +6 -0
- package/dist/services/logger/transports/memory.d.ts.map +1 -0
- package/dist/services/logger/types.d.ts +27 -4
- package/dist/services/logger/types.d.ts.map +1 -1
- package/package.json +4 -3
- package/src/constants.ts +12 -0
- package/src/index.ts +1 -0
- package/src/services/entity-event/handlers/index.ts +9 -0
- package/src/services/{domain-event → entity-event/handlers}/redis/helpers.ts +4 -4
- package/src/services/{domain-event → entity-event/handlers}/redis/module.ts +8 -8
- package/src/services/{domain-event → entity-event/handlers}/socket/index.ts +0 -1
- package/src/services/entity-event/handlers/socket/module.ts +71 -0
- package/src/services/{domain-event → entity-event}/index.ts +1 -2
- package/src/services/{domain-event → entity-event}/module.ts +24 -20
- package/src/services/entity-event/singleton.ts +22 -0
- package/src/services/{domain-event → entity-event}/types.ts +18 -16
- package/src/services/{domain-event → entity-event}/utils.ts +1 -1
- package/src/services/index.ts +1 -1
- package/src/services/logger/index.ts +1 -0
- package/src/services/logger/module.ts +12 -25
- package/src/services/logger/singleton.ts +1 -1
- package/src/services/logger/transports/console.ts +27 -0
- package/src/services/logger/transports/index.ts +9 -0
- package/src/services/logger/transports/memory.ts +18 -0
- package/src/services/logger/types.ts +27 -5
- package/test/data/error.ts +16 -0
- package/test/unit/logger.spec.ts +57 -0
- package/dist/services/domain-event/index.d.ts +0 -6
- package/dist/services/domain-event/index.d.ts.map +0 -1
- package/dist/services/domain-event/module.d.ts +0 -10
- package/dist/services/domain-event/redis/helpers.d.ts +0 -2
- package/dist/services/domain-event/redis/helpers.d.ts.map +0 -1
- package/dist/services/domain-event/redis/index.d.ts.map +0 -1
- package/dist/services/domain-event/redis/module.d.ts +0 -8
- package/dist/services/domain-event/redis/module.d.ts.map +0 -1
- package/dist/services/domain-event/singleton.d.ts +0 -4
- package/dist/services/domain-event/singleton.d.ts.map +0 -1
- package/dist/services/domain-event/socket/helpers.d.ts +0 -3
- package/dist/services/domain-event/socket/helpers.d.ts.map +0 -1
- package/dist/services/domain-event/socket/index.d.ts +0 -3
- package/dist/services/domain-event/socket/index.d.ts.map +0 -1
- package/dist/services/domain-event/socket/module.d.ts +0 -8
- package/dist/services/domain-event/socket/module.d.ts.map +0 -1
- package/dist/services/domain-event/types.d.ts +0 -37
- package/dist/services/domain-event/types.d.ts.map +0 -1
- package/dist/services/domain-event/utils.d.ts +0 -2
- package/dist/services/domain-event/utils.d.ts.map +0 -1
- package/src/services/domain-event/singleton.ts +0 -36
- package/src/services/domain-event/socket/helpers.ts +0 -26
- package/src/services/domain-event/socket/module.ts +0 -53
- /package/dist/services/{domain-event → entity-event/handlers}/redis/index.d.ts +0 -0
- /package/src/services/{domain-event → entity-event/handlers}/redis/index.ts +0 -0
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/core/component/error.ts","../src/utils/has-property.ts","../src/core/component/handler/check.ts","../src/core/component/handler/module.ts","../src/core/component/helper.ts","../src/core/queue/utils.ts","../src/core/queue-router/constants.ts","../src/core/queue-router/helpers.ts","../src/services/amqp/singleton.ts","../src/services/vault/singleton.ts","../src/services/authup/helpers.ts","../src/services/authup-client-authentication-hook/singleton.ts","../src/services/authup/module.ts","../src/services/authup/singleton.ts","../src/services/redis/singleton.ts","../src/services/redis/singleton-publish.ts","../src/services/redis/singleton-subscribe.ts","../src/services/cache/adapters/memory.ts","../src/services/cache/adapters/redis.ts","../src/services/cache/adapters/factory.ts","../src/services/cache/helper.ts","../src/services/cache/module.ts","../src/services/cache/singleton.ts","../src/services/logger/module.ts","../src/services/logger/singleton.ts","../src/services/domain-event/module.ts","../src/services/domain-event/utils.ts","../src/services/domain-event/redis/helpers.ts","../src/services/domain-event/redis/module.ts","../src/services/domain-event/socket/helpers.ts","../src/services/domain-event/socket/module.ts","../src/services/domain-event/singleton.ts","../src/core/queue-router/module.ts","../src/core/queue-router/singleton.ts"],"sourcesContent":["/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ComponentErrorOptions } from './type';\n\nexport class ComponentError extends Error {\n public code?: string | null;\n\n constructor(input: ComponentErrorOptions) {\n super(input.message, { cause: input.cause });\n\n this.code = input.code;\n }\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function hasOwnProperty<X extends Record<string, any>, Y extends PropertyKey>(\n obj: X,\n prop: Y,\n): obj is X & Record<Y, unknown> {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@privateaim/kit';\nimport { hasOwnProperty } from '../../../utils';\n\nimport type { ComponentHandler, ComponentHandlerFn } from './types';\n\nexport function isComponentHandler(input: unknown) : input is ComponentHandler {\n if (!isObject(input)) {\n return false;\n }\n\n return !(!hasOwnProperty(input, 'execute') || typeof input.execute !== 'function');\n}\n\nexport function isComponentHandlerFn(input: unknown) : input is ComponentHandlerFn {\n return typeof input === 'function';\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ObjectLiteral } from '../../../type';\nimport { isComponentHandlerFn } from './check';\nimport type { ComponentHandler, ComponentHandlerFn } from './types';\n\nexport class ComponentHandlers {\n protected handlers: Record<string, ComponentHandlerFn | ComponentHandler>;\n\n constructor() {\n this.handlers = {};\n }\n\n mount<K extends string>(key: K, fn: ComponentHandler<K, any> | ComponentHandlerFn<K, any>) {\n this.handlers[key] = fn;\n }\n\n unmount(key: string) {\n delete this.handlers[key];\n }\n\n async setup() : Promise<void> {\n const keys = Object.keys(this.handlers);\n for (let i = 0; i < keys.length; i++) {\n const handler = this.handlers[keys[i]];\n\n if (\n !isComponentHandlerFn(handler) &&\n handler.setup\n ) {\n await handler.setup();\n }\n }\n }\n\n async execute(\n key: string,\n value: ObjectLiteral = {},\n metadata: ObjectLiteral = {},\n ) : Promise<void> {\n const handler = this.handlers[key];\n if (!handler) {\n return;\n }\n\n if (isComponentHandlerFn(handler)) {\n await handler(value, { key, metadata });\n } else {\n await handler.handle(value, { key, metadata });\n }\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@privateaim/kit';\nimport type { ComponentError } from './error';\n\nexport function isComponentError(input: unknown) : input is ComponentError {\n if (!isObject(input)) {\n return false;\n }\n\n if (\n typeof input.message !== 'undefined' &&\n typeof input.message !== 'string'\n ) {\n return false;\n }\n\n if (typeof input.code === 'undefined') {\n return true;\n }\n\n return typeof input.code === 'string' || input.code === null;\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasOwnProperty, isObject } from '@privateaim/kit';\nimport type { QueuePayload } from './type';\n\nexport function isQueuePayload(input: unknown) : input is QueuePayload {\n return isObject(input) &&\n hasOwnProperty(input, 'data') &&\n isObject(input.data) &&\n hasOwnProperty(input, 'metadata') &&\n isObject(input.metadata);\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum QueueRouterRoutingType {\n WORK = 'work',\n PUB_SUB = 'pubSub',\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createNanoID, hasOwnProperty, isObject } from '@privateaim/kit';\nimport type { QueueRouterPayload, QueueRouterPayloadInput } from './types';\n\nexport function buildQueueRouterPublishPayload(\n input: QueueRouterPayloadInput,\n) : QueueRouterPayload {\n return {\n id: input.id || createNanoID(),\n type: input.type,\n data: input.data || {},\n metadata: {\n timestamp: Date.now(),\n ...input.metadata,\n },\n };\n}\n\nexport function isQueueRouterPayload(input: unknown) : input is QueueRouterPayload {\n return isObject(input) &&\n typeof input.id === 'string' &&\n typeof input.type === 'string' &&\n hasOwnProperty(input, 'data') &&\n isObject(input.data) &&\n hasOwnProperty(input, 'metadata') &&\n isObject(input.metadata);\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Client } from 'amqp-extension';\nimport type { Factory } from 'singa';\nimport { singa } from 'singa';\n\nconst instance = singa<Client>({\n name: 'amqp',\n});\n\nexport function setAmqpClientFactory(factory: Factory<Client>) {\n instance.setFactory(factory);\n}\n\nexport function isAmqpClientUsable() {\n return instance.has() || instance.hasFactory();\n}\n\nexport function useAmqpClient() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Factory } from 'singa';\nimport { singa } from 'singa';\nimport type { VaultClient } from '@hapic/vault';\n\nconst instance = singa<VaultClient>({\n name: 'vault',\n});\n\nexport function setVaultFactory(factory: Factory<VaultClient>) {\n instance.setFactory(factory);\n}\n\nexport function isVaultClientUsable() {\n return instance.has() || instance.hasFactory();\n}\n\nexport function useVaultClient() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { TokenCreatorOptions } from '@authup/core-http-kit';\nimport { isVaultClientUsable, useVaultClient } from '../vault';\n\nexport function guessAuthupTokenCreatorOptions() : TokenCreatorOptions {\n let options : TokenCreatorOptions;\n if (isVaultClientUsable()) {\n options = {\n type: 'robotInVault',\n name: 'system',\n vault: useVaultClient(),\n };\n } else {\n options = {\n type: 'user',\n name: 'admin',\n password: 'start123',\n };\n }\n\n return options;\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ClientAuthenticationHook } from '@authup/core-http-kit';\nimport type { Factory } from 'singa';\nimport { singa } from 'singa';\n\nconst instance = singa<ClientAuthenticationHook>({\n name: 'clientAuthenticationHook',\n});\n\nexport function setClientAuthenticationHookFactory(factory: Factory<ClientAuthenticationHook>) {\n instance.setFactory(factory);\n}\n\nexport function isClientAuthenticationHookUsable() {\n return instance.has() || instance.hasFactory();\n}\n\nexport function useClientAuthenticationHook() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n Client,\n ClientAuthenticationHook,\n} from '@authup/core-http-kit';\nimport {\n isClientAuthenticationHookUsable,\n setClientAuthenticationHookFactory,\n useClientAuthenticationHook,\n} from '../authup-client-authentication-hook';\nimport { guessAuthupTokenCreatorOptions } from './helpers';\nimport type { AuthupClientOptions } from './types';\n\nexport class AuthupClient extends Client {\n constructor(options: AuthupClientOptions = {}) {\n super(options);\n\n if (!isClientAuthenticationHookUsable()) {\n setClientAuthenticationHookFactory(\n () => new ClientAuthenticationHook({\n baseURL: options.baseURL,\n tokenCreator: options.tokenCreator || guessAuthupTokenCreatorOptions(),\n }),\n );\n }\n\n const hook = useClientAuthenticationHook();\n hook.attach(this);\n }\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Client } from '@authup/core-http-kit';\nimport type { Factory } from 'singa';\nimport { singa } from 'singa';\n\nconst instance = singa<Client>({\n name: 'authup',\n});\n\nexport function useAuthupClient() {\n return instance.use();\n}\n\nexport function isAuthupClientUsable() {\n return instance.has() || instance.hasFactory();\n}\n\nexport function setAuthupClientFactory(factory: Factory<Client>) {\n instance.setFactory(factory);\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Client } from 'redis-extension';\nimport type { Factory } from 'singa';\nimport { singa } from 'singa';\n\nconst instance = singa<Client>({\n name: 'redis',\n});\n\nexport function setRedisFactory(factory: Factory<Client>) {\n instance.setFactory(factory);\n}\n\nexport function isRedisClientUsable() {\n return instance.has() || instance.hasFactory();\n}\n\nexport function setRedisClient(input: Client) {\n instance.set(input);\n}\n\nexport function useRedisClient() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Client } from 'redis-extension';\nimport { singa } from 'singa';\nimport { useRedisClient } from './singleton';\n\nconst instance = singa<Client>({\n name: 'redisPublish',\n factory: () => useRedisClient().duplicate(),\n});\n\nexport function useRedisPublishClient() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Client } from 'redis-extension';\nimport { singa } from 'singa';\nimport { useRedisClient } from './singleton';\n\nconst instance = singa<Client>({\n name: 'redisSubscribe',\n factory: () => useRedisClient().duplicate(),\n});\n\nexport function useRedisSubscribeClient() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Options } from '@isaacs/ttlcache';\nimport TTLCache from '@isaacs/ttlcache';\nimport type { CacheClearOptions, CacheSetOptions } from '../types';\nimport type { CacheAdapter } from './types';\n\nexport class MemoryCacheAdapter<\n VALUE = any,\n> implements CacheAdapter {\n protected instance : TTLCache<string, VALUE>;\n\n constructor(options: Options<string, VALUE> = {}) {\n this.instance = new TTLCache<string, VALUE>({\n checkAgeOnGet: true,\n ttl: Infinity,\n ...(options || {}),\n });\n }\n\n async get(key: string): Promise<VALUE> {\n return this.instance.get(key);\n }\n\n async has(key: string) : Promise<boolean> {\n return this.instance.has(key);\n }\n\n async set(key: string, value: VALUE, options: CacheSetOptions): Promise<void> {\n this.instance.set(key, value, {\n ttl: options.ttl,\n });\n }\n\n async drop(key: string): Promise<void> {\n this.instance.delete(key);\n }\n\n async dropMany(keys: string[]) : Promise<void> {\n for (let i = 0; i < keys.length; i++) {\n this.instance.delete(keys[i]);\n }\n }\n\n async clear(options: CacheClearOptions = {}) : Promise<void> {\n if (options.prefix) {\n const keys = this.instance.keys();\n let iterator = keys.next();\n while (!iterator.done) {\n if (iterator.value.startsWith(options.prefix)) {\n this.instance.delete(iterator.value);\n }\n\n iterator = keys.next();\n }\n\n return;\n }\n\n this.instance.clear();\n }\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Client } from 'redis-extension';\nimport { JsonAdapter } from 'redis-extension';\nimport { useRedisClient } from '../../redis';\nimport type { CacheClearOptions, CacheSetOptions } from '../types';\nimport type { CacheAdapter } from './types';\n\nexport class RedisCacheAdapter implements CacheAdapter {\n protected client : Client;\n\n protected instance : JsonAdapter;\n\n constructor() {\n this.client = useRedisClient();\n this.instance = new JsonAdapter(this.client);\n }\n\n async get(key: string): Promise<any> {\n return this.instance.get(key);\n }\n\n async has(key: string) : Promise<boolean> {\n const exists = await this.client.exists(key);\n\n return !!exists;\n }\n\n async set(key: string, value: any, options: CacheSetOptions): Promise<void> {\n await this.instance.set(key, value, {\n milliseconds: options.ttl,\n });\n }\n\n async drop(key: string): Promise<void> {\n await this.instance.drop(key);\n }\n\n async dropMany(keys: string[]) : Promise<void> {\n const pipeline = this.client.pipeline();\n\n for (let i = 0; i < keys.length; i++) {\n pipeline.del(keys[i]);\n }\n\n await pipeline.exec();\n }\n\n async clear(options: CacheClearOptions = {}) : Promise<void> {\n if (options.prefix) {\n const pipeline = this.client.pipeline();\n\n const keys = await this.client.keys(`${options.prefix}*`);\n for (let i = 0; i < keys.length; i++) {\n pipeline.del(keys[i]);\n }\n\n await pipeline.exec();\n\n return;\n }\n await this.client.flushdb();\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isRedisClientUsable } from '../../redis';\nimport { MemoryCacheAdapter } from './memory';\nimport { RedisCacheAdapter } from './redis';\n\nexport function createCacheAdapter() {\n if (isRedisClientUsable()) {\n return new RedisCacheAdapter();\n }\n\n return new MemoryCacheAdapter();\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { buildRedisKeyPath } from '../redis';\nimport type { CacheKeyBuildOptions } from './types';\n\nexport function buildCacheKey(options: CacheKeyBuildOptions) {\n return buildRedisKeyPath(options);\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { CacheAdapter } from './adapters';\nimport type { CacheClearOptions, CacheSetOptions } from './types';\n\nexport class Cache {\n protected adapter : CacheAdapter;\n\n constructor(adapter: CacheAdapter) {\n this.adapter = adapter;\n }\n\n async set(key: string, value: any, options: CacheSetOptions = {}) : Promise<void> {\n await this.adapter.set(key, value, options);\n }\n\n async get(key: string) : Promise<any | undefined> {\n return this.adapter.get(key);\n }\n\n async has(key: string) : Promise<boolean> {\n return this.adapter.has(key);\n }\n\n async drop(key: string) : Promise<void> {\n return this.adapter.drop(key);\n }\n\n async dropMany(keys: string[]) : Promise<void> {\n return this.adapter.dropMany(keys);\n }\n\n async clear(options: CacheClearOptions = {}) : Promise<void> {\n return this.adapter.clear(options);\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { singa } from 'singa';\nimport { isRedisClientUsable } from '../redis';\nimport type { CacheAdapter } from './adapters';\nimport { MemoryCacheAdapter, RedisCacheAdapter } from './adapters';\nimport { Cache } from './module';\n\nconst instance = singa<Cache>({\n name: 'cache',\n factory: () => {\n let adapter : CacheAdapter;\n if (isRedisClientUsable()) {\n adapter = new RedisCacheAdapter();\n } else {\n adapter = new MemoryCacheAdapter();\n }\n\n return new Cache(adapter);\n },\n});\n\nexport function useCache() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { read } from 'envix';\nimport { EnvironmentName } from 'typeorm-extension';\nimport type { Logger } from 'winston';\nimport { createLogger as create, format, transports } from 'winston';\nimport type { LoggerCreateContext, LoggerTransports } from './types';\n\nfunction toTransports(input: LoggerTransports) {\n return Array.isArray(input) ? input : [input];\n}\n\nexport function createLogger(ctx: LoggerCreateContext = {}) : Logger {\n let loggerTransports : LoggerTransports;\n if (read('env') === EnvironmentName.PRODUCTION) {\n loggerTransports = [\n new transports.Console({\n level: 'info',\n }),\n ...(ctx.transports ? toTransports(ctx.transports) : []),\n ];\n } else {\n loggerTransports = [\n new transports.Console({\n level: 'debug',\n }),\n ...(ctx.transports ? toTransports(ctx.transports) : []),\n ];\n }\n\n return create({\n format: format.combine(\n format.errors({ stack: true }),\n format.timestamp(),\n format.simple(),\n ),\n level: 'debug',\n transports: loggerTransports,\n // todo: deeply merge options\n ...(ctx.options || {}),\n });\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { type Factory, singa } from 'singa';\nimport type { Logger } from 'winston';\n\nconst instance = singa<Logger>({\n name: 'logger',\n});\n\nexport function setLoggerFactory(factory: Factory<Logger>) {\n instance.setFactory(factory);\n}\n\nexport function isLoggerUsable() {\n return instance.has() || instance.hasFactory();\n}\n\nexport function setLogger(input: Logger) {\n instance.set(input);\n}\n\nexport function useLogger() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ObjectLiteral } from '@privateaim/kit';\nimport { buildDomainEventFullName } from '@privateaim/kit';\nimport { isLoggerUsable, useLogger } from '../logger';\nimport type {\n DomainEventConsumeOptions, DomainEventDestination,\n DomainEventPublishOptions,\n IDomainEventConsumer,\n IDomainEventPublisher,\n} from './types';\n\nexport class DomainEventPublisher implements IDomainEventPublisher {\n protected consumers : Set<IDomainEventConsumer>;\n\n constructor() {\n this.consumers = new Set<IDomainEventConsumer>();\n }\n\n addConsumer(consumer: IDomainEventConsumer) {\n this.consumers.add(consumer);\n }\n\n async safePublish<T extends ObjectLiteral = ObjectLiteral>(\n ctx: DomainEventPublishOptions<T>,\n ) : Promise<void> {\n try {\n await this.publish(ctx);\n } catch (e) {\n if (isLoggerUsable()) {\n useLogger().error(`Publishing event ${buildDomainEventFullName(ctx.metadata.domain, ctx.metadata.event)} failed`);\n useLogger().error(e);\n }\n }\n }\n\n async publish<T extends ObjectLiteral = ObjectLiteral>(\n ctx: DomainEventPublishOptions<T>,\n ) : Promise<void> {\n if (isLoggerUsable()) {\n useLogger().info(`Publishing event ${buildDomainEventFullName(ctx.metadata.domain, ctx.metadata.event)}`);\n }\n\n let destinations : DomainEventDestination[] = [];\n if (typeof ctx.destinations === 'function') {\n destinations = ctx.destinations(ctx.data);\n } else {\n destinations = ctx.destinations;\n }\n\n const consumeContext : DomainEventConsumeOptions = {\n ...ctx,\n destinations,\n };\n\n const consumers = this.consumers.values();\n while (true) {\n const it = consumers.next();\n if (it.done) {\n return;\n }\n\n await it.value.consume(consumeContext);\n }\n }\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@privateaim/kit';\n\nexport function transformEventData<T>(input: T) : T {\n if (isObject(input)) {\n const keys = Object.keys(input);\n for (let i = 0; i < keys.length; i++) {\n const value = input[keys[i]];\n if (value instanceof Date) {\n input[keys[i]] = value.toISOString();\n }\n }\n }\n\n return input;\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nfunction stringify(input: string | string[]) {\n return typeof input === 'string' ? input : input.join('/');\n}\n\nexport function buildDomainEventRedisChannel(\n channel: string | string[],\n namespace?: string | string[],\n) {\n const channelNormalized = stringify(channel);\n\n let namespaceNormalized : string | undefined;\n if (namespace) {\n namespaceNormalized = stringify(namespace);\n }\n\n if (typeof namespaceNormalized === 'undefined') {\n return channelNormalized;\n }\n\n return `${namespaceNormalized}/${channelNormalized}`;\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Client } from 'redis-extension';\nimport type { DomainEventRecord } from '@privateaim/kit';\nimport type { DomainEventPublishOptions, IDomainEventConsumer } from '../types';\nimport { transformEventData } from '../utils';\nimport { buildDomainEventRedisChannel } from './helpers';\n\nexport class DomainEventRedisPublisher implements IDomainEventConsumer {\n protected driver : Client;\n\n constructor(client: Client) {\n this.driver = client;\n }\n\n async consume(ctx: DomainEventPublishOptions) : Promise<void> {\n const payload : DomainEventRecord = {\n type: ctx.metadata.domain,\n event: ctx.metadata.event,\n data: transformEventData(ctx.data),\n };\n\n const payloadSerialized = JSON.stringify(payload);\n\n const pipeline = this.driver.pipeline();\n for (let i = 0; i < ctx.destinations.length; i++) {\n const destination = ctx.destinations[i];\n\n const key = buildDomainEventRedisChannel(\n destination.channel,\n destination.namespace,\n );\n\n pipeline.publish(key, payloadSerialized);\n }\n\n await pipeline.exec();\n }\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function buildDomainEventSocketNamespace(namespace?: string | string[]) {\n if (typeof namespace === 'undefined') {\n return '/';\n }\n\n if (typeof namespace === 'string') {\n return namespace.startsWith('/') ? namespace : `/${namespace}`;\n }\n\n return `/${namespace.join('/')}`;\n}\n\nexport function buildDomainEventSocketChannel(channel: string | string[]) {\n if (typeof channel === 'string') {\n return channel;\n }\n\n return channel.join('/');\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { buildDomainEventFullName } from '@privateaim/kit';\nimport { Emitter } from '@socket.io/redis-emitter';\nimport type { Client } from 'redis-extension';\nimport type { DomainEventPublishOptions, IDomainEventConsumer } from '../types';\nimport { transformEventData } from '../utils';\nimport { buildDomainEventSocketChannel, buildDomainEventSocketNamespace } from './helpers';\n\nexport class DomainEventSocketConsumer implements IDomainEventConsumer {\n protected client : Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n async consume(ctx: DomainEventPublishOptions) : Promise<void> {\n ctx.data = transformEventData(ctx.data);\n\n for (let i = 0; i < ctx.destinations.length; i++) {\n const destination = ctx.destinations[i];\n\n const namespace = buildDomainEventSocketNamespace(destination.namespace);\n const roomName = buildDomainEventSocketChannel(destination.channel);\n\n const fullEventName = buildDomainEventFullName(\n ctx.metadata.domain,\n ctx.metadata.event,\n );\n\n const emitter = new Emitter(this.client, {}, namespace);\n\n emitter\n .in(roomName)\n .emit(fullEventName, {\n data: {\n data: ctx.data,\n type: ctx.metadata.domain,\n event: ctx.metadata.event,\n },\n meta: {\n namespace,\n roomName,\n },\n });\n }\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { singa } from 'singa';\nimport { isRedisClientUsable, useRedisClient } from '../redis';\nimport { DomainEventPublisher } from './module';\nimport { DomainEventRedisPublisher } from './redis';\nimport { DomainEventSocketConsumer } from './socket';\n\nconst singaInstance = singa<DomainEventPublisher>({\n name: 'domainEventPublisher',\n factory: () => {\n const publisher = new DomainEventPublisher();\n\n if (isRedisClientUsable()) {\n const client = useRedisClient();\n\n publisher.addConsumer(new DomainEventRedisPublisher(client));\n publisher.addConsumer(new DomainEventSocketConsumer(client));\n }\n\n return publisher;\n },\n});\n\nexport function useDomainEventPublisherSinga() {\n return singaInstance;\n}\n\nexport function useDomainEventPublisher() {\n return singaInstance.use();\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ExchangeType } from 'amqp-extension';\nimport type { Client } from 'amqp-extension';\nimport { isLoggerUsable, useLogger } from '../../services';\nimport { QueueRouterRoutingType } from './constants';\nimport { isQueueRouterPayload } from './helpers';\nimport type {\n QueueRouterHandler,\n QueueRouterHandlers,\n QueueRouterPayload, QueueRouterPublishOptions, QueueRouterRouting,\n} from './types';\n\nexport class QueueRouter {\n protected driver : Client;\n\n //----------------------------------------------------------------\n\n constructor(driver: Client) {\n this.driver = driver;\n }\n\n //----------------------------------------------------------------\n\n publish(\n message: QueueRouterPayload,\n options: QueueRouterPublishOptions = {},\n ) : Promise<boolean> {\n options.logging ??= true;\n\n let exchange : Client;\n if (message.metadata.routing.type === 'work') {\n exchange = this.driver.of({\n type: ExchangeType.DIRECT,\n name: message.metadata.routing.namespace || '',\n });\n } else {\n exchange = this.driver.of({\n type: ExchangeType.TOPIC,\n name: message.metadata.routing.namespace || 'FLAME',\n });\n }\n\n if (\n options.logging &&\n isLoggerUsable()\n ) {\n useLogger()\n .debug(`Publishing queue message ${message.type} in ${message.metadata.routing.key}`);\n }\n\n return exchange.publish(message.metadata.routing.key, message, {\n type: message.type,\n messageId: message.id,\n persistent: message.metadata.persistent ??\n message.metadata.routing.type === QueueRouterRoutingType.WORK,\n });\n }\n\n consumeAny(\n routing: QueueRouterRouting,\n fn: (payload: QueueRouterPayload) => Promise<void> | void,\n ) {\n return this.consume(routing, {\n $any: (payload) => fn(payload),\n });\n }\n\n consume(routing: QueueRouterRouting, handlers: QueueRouterHandlers) : Promise<void> {\n let exchange : Client;\n if (routing.type === 'work') {\n exchange = this.driver.of({\n type: ExchangeType.DIRECT,\n name: routing.namespace || '',\n });\n } else {\n exchange = this.driver.of({\n type: ExchangeType.TOPIC,\n name: routing.namespace || 'FLAME',\n });\n }\n\n return exchange.consume(routing.key, {\n prefetchCount: routing.type === QueueRouterRoutingType.WORK ? 1 : undefined,\n // noAck: routing.type !== QueueRouterRoutingType.WORK,\n requeueOnFailure: routing.type === QueueRouterRoutingType.WORK,\n }, {\n $any: async (input) => {\n const payload = JSON.parse(input.content.toString('utf-8'));\n if (!isQueueRouterPayload(payload)) {\n return;\n }\n\n if (input.fields.redelivered) {\n if (isLoggerUsable()) {\n useLogger()\n .debug(`Queue message ${input.properties.type} in ${routing.key} is not processed again.`);\n }\n\n return;\n }\n\n if (isLoggerUsable()) {\n useLogger()\n .debug(`Consuming queue message ${input.properties.type} in ${routing.key}`);\n }\n\n let handler : QueueRouterHandler | undefined;\n\n if (\n typeof input.properties.type === 'string' &&\n handlers[input.properties.type]\n ) {\n handler = handlers[input.properties.type];\n } else {\n handler = handlers.$any;\n }\n\n if (typeof handler !== 'function') {\n if (isLoggerUsable()) {\n useLogger()\n .debug(`No queue handler to consume message ${input.properties.type} in ${routing.key}`);\n }\n\n return;\n }\n\n try {\n await handler(payload);\n } catch (e) {\n if (isLoggerUsable()) {\n useLogger()\n .error(e);\n }\n\n throw e;\n }\n },\n });\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { singa } from 'singa';\nimport { isAmqpClientUsable, useAmqpClient } from '../../services';\nimport { QueueRouter } from './module';\n\nconst instance = singa<QueueRouter>({\n name: 'queueRouter',\n factory: () => {\n const amqp = useAmqpClient();\n\n return new QueueRouter(amqp);\n },\n});\n\nexport function isQueueRouterUsable() {\n return instance.has() || isAmqpClientUsable();\n}\n\nexport function useQueueRouter() {\n return instance.use();\n}\n"],"names":["_define_property","ComponentError","Error","input","message","cause","code","hasOwnProperty","obj","prop","Object","prototype","call","isComponentHandlerFn","ComponentHandlers","mount","key","fn","handlers","unmount","setup","keys","i","length","handler","execute","value","metadata","handle","isComponentError","isObject","isQueuePayload","data","QueueRouterRoutingType","buildQueueRouterPublishPayload","id","createNanoID","type","timestamp","Date","now","isQueueRouterPayload","instance","singa","name","setAmqpClientFactory","factory","setFactory","isAmqpClientUsable","has","hasFactory","useAmqpClient","use","setVaultFactory","isVaultClientUsable","useVaultClient","guessAuthupTokenCreatorOptions","options","vault","password","setClientAuthenticationHookFactory","isClientAuthenticationHookUsable","useClientAuthenticationHook","AuthupClient","Client","ClientAuthenticationHook","baseURL","tokenCreator","hook","attach","useAuthupClient","isAuthupClientUsable","setAuthupClientFactory","setRedisFactory","isRedisClientUsable","setRedisClient","set","useRedisClient","duplicate","useRedisPublishClient","useRedisSubscribeClient","MemoryCacheAdapter","get","ttl","drop","delete","dropMany","clear","prefix","iterator","next","done","startsWith","TTLCache","checkAgeOnGet","Infinity","RedisCacheAdapter","exists","client","milliseconds","pipeline","del","exec","flushdb","JsonAdapter","createCacheAdapter","buildCacheKey","buildRedisKeyPath","Cache","adapter","useCache","toTransports","Array","isArray","createLogger","ctx","loggerTransports","read","EnvironmentName","PRODUCTION","transports","Console","level","create","format","combine","errors","stack","simple","setLoggerFactory","isLoggerUsable","setLogger","useLogger","DomainEventPublisher","addConsumer","consumer","consumers","add","safePublish","publish","e","error","buildDomainEventFullName","domain","event","info","destinations","consumeContext","values","it","consume","Set","transformEventData","toISOString","stringify","join","buildDomainEventRedisChannel","channel","namespace","channelNormalized","namespaceNormalized","DomainEventRedisPublisher","payload","payloadSerialized","JSON","driver","destination","buildDomainEventSocketNamespace","buildDomainEventSocketChannel","DomainEventSocketConsumer","roomName","fullEventName","emitter","Emitter","in","emit","meta","singaInstance","publisher","useDomainEventPublisherSinga","useDomainEventPublisher","QueueRouter","logging","exchange","routing","of","ExchangeType","DIRECT","TOPIC","debug","messageId","persistent","WORK","consumeAny","$any","prefetchCount","undefined","requeueOnFailure","parse","content","toString","fields","redelivered","properties","amqp","isQueueRouterUsable","useQueueRouter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/constants.ts","../src/core/component/error.ts","../src/utils/has-property.ts","../src/core/component/handler/check.ts","../src/core/component/handler/module.ts","../src/core/component/helper.ts","../src/core/queue/utils.ts","../src/core/queue-router/constants.ts","../src/core/queue-router/helpers.ts","../src/services/amqp/singleton.ts","../src/services/vault/singleton.ts","../src/services/authup/helpers.ts","../src/services/authup-client-authentication-hook/singleton.ts","../src/services/authup/module.ts","../src/services/authup/singleton.ts","../src/services/redis/singleton.ts","../src/services/redis/singleton-publish.ts","../src/services/redis/singleton-subscribe.ts","../src/services/cache/adapters/memory.ts","../src/services/cache/adapters/redis.ts","../src/services/cache/adapters/factory.ts","../src/services/cache/helper.ts","../src/services/cache/module.ts","../src/services/cache/singleton.ts","../src/services/logger/transports/console.ts","../src/services/logger/transports/memory.ts","../src/services/logger/module.ts","../src/services/logger/singleton.ts","../src/services/entity-event/module.ts","../src/services/entity-event/utils.ts","../src/services/entity-event/handlers/redis/helpers.ts","../src/services/entity-event/handlers/redis/module.ts","../src/services/entity-event/handlers/socket/module.ts","../src/services/entity-event/singleton.ts","../src/core/queue-router/module.ts","../src/core/queue-router/singleton.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum EnvironmentName {\n TEST = 'test',\n DEVELOPMENT = 'development',\n PRODUCTION = 'production',\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ComponentErrorOptions } from './type';\n\nexport class ComponentError extends Error {\n public code?: string | null;\n\n constructor(input: ComponentErrorOptions) {\n super(input.message, { cause: input.cause });\n\n this.code = input.code;\n }\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function hasOwnProperty<X extends Record<string, any>, Y extends PropertyKey>(\n obj: X,\n prop: Y,\n): obj is X & Record<Y, unknown> {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@privateaim/kit';\nimport { hasOwnProperty } from '../../../utils';\n\nimport type { ComponentHandler, ComponentHandlerFn } from './types';\n\nexport function isComponentHandler(input: unknown) : input is ComponentHandler {\n if (!isObject(input)) {\n return false;\n }\n\n return !(!hasOwnProperty(input, 'execute') || typeof input.execute !== 'function');\n}\n\nexport function isComponentHandlerFn(input: unknown) : input is ComponentHandlerFn {\n return typeof input === 'function';\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ObjectLiteral } from '../../../type';\nimport { isComponentHandlerFn } from './check';\nimport type { ComponentHandler, ComponentHandlerFn } from './types';\n\nexport class ComponentHandlers {\n protected handlers: Record<string, ComponentHandlerFn | ComponentHandler>;\n\n constructor() {\n this.handlers = {};\n }\n\n mount<K extends string>(key: K, fn: ComponentHandler<K, any> | ComponentHandlerFn<K, any>) {\n this.handlers[key] = fn;\n }\n\n unmount(key: string) {\n delete this.handlers[key];\n }\n\n async setup() : Promise<void> {\n const keys = Object.keys(this.handlers);\n for (let i = 0; i < keys.length; i++) {\n const handler = this.handlers[keys[i]];\n\n if (\n !isComponentHandlerFn(handler) &&\n handler.setup\n ) {\n await handler.setup();\n }\n }\n }\n\n async execute(\n key: string,\n value: ObjectLiteral = {},\n metadata: ObjectLiteral = {},\n ) : Promise<void> {\n const handler = this.handlers[key];\n if (!handler) {\n return;\n }\n\n if (isComponentHandlerFn(handler)) {\n await handler(value, { key, metadata });\n } else {\n await handler.handle(value, { key, metadata });\n }\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@privateaim/kit';\nimport type { ComponentError } from './error';\n\nexport function isComponentError(input: unknown) : input is ComponentError {\n if (!isObject(input)) {\n return false;\n }\n\n if (\n typeof input.message !== 'undefined' &&\n typeof input.message !== 'string'\n ) {\n return false;\n }\n\n if (typeof input.code === 'undefined') {\n return true;\n }\n\n return typeof input.code === 'string' || input.code === null;\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasOwnProperty, isObject } from '@privateaim/kit';\nimport type { QueuePayload } from './type';\n\nexport function isQueuePayload(input: unknown) : input is QueuePayload {\n return isObject(input) &&\n hasOwnProperty(input, 'data') &&\n isObject(input.data) &&\n hasOwnProperty(input, 'metadata') &&\n isObject(input.metadata);\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum QueueRouterRoutingType {\n WORK = 'work',\n PUB_SUB = 'pubSub',\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createNanoID, hasOwnProperty, isObject } from '@privateaim/kit';\nimport type { QueueRouterPayload, QueueRouterPayloadInput } from './types';\n\nexport function buildQueueRouterPublishPayload(\n input: QueueRouterPayloadInput,\n) : QueueRouterPayload {\n return {\n id: input.id || createNanoID(),\n type: input.type,\n data: input.data || {},\n metadata: {\n timestamp: Date.now(),\n ...input.metadata,\n },\n };\n}\n\nexport function isQueueRouterPayload(input: unknown) : input is QueueRouterPayload {\n return isObject(input) &&\n typeof input.id === 'string' &&\n typeof input.type === 'string' &&\n hasOwnProperty(input, 'data') &&\n isObject(input.data) &&\n hasOwnProperty(input, 'metadata') &&\n isObject(input.metadata);\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Client } from 'amqp-extension';\nimport type { Factory } from 'singa';\nimport { singa } from 'singa';\n\nconst instance = singa<Client>({\n name: 'amqp',\n});\n\nexport function setAmqpClientFactory(factory: Factory<Client>) {\n instance.setFactory(factory);\n}\n\nexport function isAmqpClientUsable() {\n return instance.has() || instance.hasFactory();\n}\n\nexport function useAmqpClient() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Factory } from 'singa';\nimport { singa } from 'singa';\nimport type { VaultClient } from '@hapic/vault';\n\nconst instance = singa<VaultClient>({\n name: 'vault',\n});\n\nexport function setVaultFactory(factory: Factory<VaultClient>) {\n instance.setFactory(factory);\n}\n\nexport function isVaultClientUsable() {\n return instance.has() || instance.hasFactory();\n}\n\nexport function useVaultClient() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { TokenCreatorOptions } from '@authup/core-http-kit';\nimport { isVaultClientUsable, useVaultClient } from '../vault';\n\nexport function guessAuthupTokenCreatorOptions() : TokenCreatorOptions {\n let options : TokenCreatorOptions;\n if (isVaultClientUsable()) {\n options = {\n type: 'robotInVault',\n name: 'system',\n vault: useVaultClient(),\n };\n } else {\n options = {\n type: 'user',\n name: 'admin',\n password: 'start123',\n };\n }\n\n return options;\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ClientAuthenticationHook } from '@authup/core-http-kit';\nimport type { Factory } from 'singa';\nimport { singa } from 'singa';\n\nconst instance = singa<ClientAuthenticationHook>({\n name: 'clientAuthenticationHook',\n});\n\nexport function setClientAuthenticationHookFactory(factory: Factory<ClientAuthenticationHook>) {\n instance.setFactory(factory);\n}\n\nexport function isClientAuthenticationHookUsable() {\n return instance.has() || instance.hasFactory();\n}\n\nexport function useClientAuthenticationHook() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n Client,\n ClientAuthenticationHook,\n} from '@authup/core-http-kit';\nimport {\n isClientAuthenticationHookUsable,\n setClientAuthenticationHookFactory,\n useClientAuthenticationHook,\n} from '../authup-client-authentication-hook';\nimport { guessAuthupTokenCreatorOptions } from './helpers';\nimport type { AuthupClientOptions } from './types';\n\nexport class AuthupClient extends Client {\n constructor(options: AuthupClientOptions = {}) {\n super(options);\n\n if (!isClientAuthenticationHookUsable()) {\n setClientAuthenticationHookFactory(\n () => new ClientAuthenticationHook({\n baseURL: options.baseURL,\n tokenCreator: options.tokenCreator || guessAuthupTokenCreatorOptions(),\n }),\n );\n }\n\n const hook = useClientAuthenticationHook();\n hook.attach(this);\n }\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Client } from '@authup/core-http-kit';\nimport type { Factory } from 'singa';\nimport { singa } from 'singa';\n\nconst instance = singa<Client>({\n name: 'authup',\n});\n\nexport function useAuthupClient() {\n return instance.use();\n}\n\nexport function isAuthupClientUsable() {\n return instance.has() || instance.hasFactory();\n}\n\nexport function setAuthupClientFactory(factory: Factory<Client>) {\n instance.setFactory(factory);\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Client } from 'redis-extension';\nimport type { Factory } from 'singa';\nimport { singa } from 'singa';\n\nconst instance = singa<Client>({\n name: 'redis',\n});\n\nexport function setRedisFactory(factory: Factory<Client>) {\n instance.setFactory(factory);\n}\n\nexport function isRedisClientUsable() {\n return instance.has() || instance.hasFactory();\n}\n\nexport function setRedisClient(input: Client) {\n instance.set(input);\n}\n\nexport function useRedisClient() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Client } from 'redis-extension';\nimport { singa } from 'singa';\nimport { useRedisClient } from './singleton';\n\nconst instance = singa<Client>({\n name: 'redisPublish',\n factory: () => useRedisClient().duplicate(),\n});\n\nexport function useRedisPublishClient() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Client } from 'redis-extension';\nimport { singa } from 'singa';\nimport { useRedisClient } from './singleton';\n\nconst instance = singa<Client>({\n name: 'redisSubscribe',\n factory: () => useRedisClient().duplicate(),\n});\n\nexport function useRedisSubscribeClient() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Options } from '@isaacs/ttlcache';\nimport TTLCache from '@isaacs/ttlcache';\nimport type { CacheClearOptions, CacheSetOptions } from '../types';\nimport type { CacheAdapter } from './types';\n\nexport class MemoryCacheAdapter<\n VALUE = any,\n> implements CacheAdapter {\n protected instance : TTLCache<string, VALUE>;\n\n constructor(options: Options<string, VALUE> = {}) {\n this.instance = new TTLCache<string, VALUE>({\n checkAgeOnGet: true,\n ttl: Infinity,\n ...(options || {}),\n });\n }\n\n async get(key: string): Promise<VALUE> {\n return this.instance.get(key);\n }\n\n async has(key: string) : Promise<boolean> {\n return this.instance.has(key);\n }\n\n async set(key: string, value: VALUE, options: CacheSetOptions): Promise<void> {\n this.instance.set(key, value, {\n ttl: options.ttl,\n });\n }\n\n async drop(key: string): Promise<void> {\n this.instance.delete(key);\n }\n\n async dropMany(keys: string[]) : Promise<void> {\n for (let i = 0; i < keys.length; i++) {\n this.instance.delete(keys[i]);\n }\n }\n\n async clear(options: CacheClearOptions = {}) : Promise<void> {\n if (options.prefix) {\n const keys = this.instance.keys();\n let iterator = keys.next();\n while (!iterator.done) {\n if (iterator.value.startsWith(options.prefix)) {\n this.instance.delete(iterator.value);\n }\n\n iterator = keys.next();\n }\n\n return;\n }\n\n this.instance.clear();\n }\n}\n","/*\n * Copyright (c) 2024-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Client } from 'redis-extension';\nimport { JsonAdapter } from 'redis-extension';\nimport { useRedisClient } from '../../redis';\nimport type { CacheClearOptions, CacheSetOptions } from '../types';\nimport type { CacheAdapter } from './types';\n\nexport class RedisCacheAdapter implements CacheAdapter {\n protected client : Client;\n\n protected instance : JsonAdapter;\n\n constructor() {\n this.client = useRedisClient();\n this.instance = new JsonAdapter(this.client);\n }\n\n async get(key: string): Promise<any> {\n return this.instance.get(key);\n }\n\n async has(key: string) : Promise<boolean> {\n const exists = await this.client.exists(key);\n\n return !!exists;\n }\n\n async set(key: string, value: any, options: CacheSetOptions): Promise<void> {\n await this.instance.set(key, value, {\n milliseconds: options.ttl,\n });\n }\n\n async drop(key: string): Promise<void> {\n await this.instance.drop(key);\n }\n\n async dropMany(keys: string[]) : Promise<void> {\n const pipeline = this.client.pipeline();\n\n for (let i = 0; i < keys.length; i++) {\n pipeline.del(keys[i]);\n }\n\n await pipeline.exec();\n }\n\n async clear(options: CacheClearOptions = {}) : Promise<void> {\n if (options.prefix) {\n const pipeline = this.client.pipeline();\n\n const keys = await this.client.keys(`${options.prefix}*`);\n for (let i = 0; i < keys.length; i++) {\n pipeline.del(keys[i]);\n }\n\n await pipeline.exec();\n\n return;\n }\n await this.client.flushdb();\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isRedisClientUsable } from '../../redis';\nimport { MemoryCacheAdapter } from './memory';\nimport { RedisCacheAdapter } from './redis';\n\nexport function createCacheAdapter() {\n if (isRedisClientUsable()) {\n return new RedisCacheAdapter();\n }\n\n return new MemoryCacheAdapter();\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { buildRedisKeyPath } from '../redis';\nimport type { CacheKeyBuildOptions } from './types';\n\nexport function buildCacheKey(options: CacheKeyBuildOptions) {\n return buildRedisKeyPath(options);\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { CacheAdapter } from './adapters';\nimport type { CacheClearOptions, CacheSetOptions } from './types';\n\nexport class Cache {\n protected adapter : CacheAdapter;\n\n constructor(adapter: CacheAdapter) {\n this.adapter = adapter;\n }\n\n async set(key: string, value: any, options: CacheSetOptions = {}) : Promise<void> {\n await this.adapter.set(key, value, options);\n }\n\n async get(key: string) : Promise<any | undefined> {\n return this.adapter.get(key);\n }\n\n async has(key: string) : Promise<boolean> {\n return this.adapter.has(key);\n }\n\n async drop(key: string) : Promise<void> {\n return this.adapter.drop(key);\n }\n\n async dropMany(keys: string[]) : Promise<void> {\n return this.adapter.dropMany(keys);\n }\n\n async clear(options: CacheClearOptions = {}) : Promise<void> {\n return this.adapter.clear(options);\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { singa } from 'singa';\nimport { isRedisClientUsable } from '../redis';\nimport type { CacheAdapter } from './adapters';\nimport { MemoryCacheAdapter, RedisCacheAdapter } from './adapters';\nimport { Cache } from './module';\n\nconst instance = singa<Cache>({\n name: 'cache',\n factory: () => {\n let adapter : CacheAdapter;\n if (isRedisClientUsable()) {\n adapter = new RedisCacheAdapter();\n } else {\n adapter = new MemoryCacheAdapter();\n }\n\n return new Cache(adapter);\n },\n});\n\nexport function useCache() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { read } from 'envix';\nimport { transports } from 'winston';\nimport type { TransportStreamOptions } from 'winston-transport';\nimport { EnvironmentName } from '../../../constants';\nimport type { LoggerTransport } from '../types';\n\nexport class LoggerConsoleTransport extends transports.Console {\n constructor(options: TransportStreamOptions = {}) {\n super({\n level: read('env') === EnvironmentName.PRODUCTION ?\n 'info' :\n 'debug',\n ...options,\n });\n }\n}\n\nexport function createLoggerConsoleTransport(options: TransportStreamOptions = {}) : LoggerTransport {\n return new LoggerConsoleTransport(options);\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport Transport from 'winston-transport';\n\nexport class LoggerMemoryTransport extends Transport {\n public items : Record<PropertyKey, any>[] = [];\n\n log(info: Record<PropertyKey, any>, next: () => void): any {\n this.items.push(info);\n\n next();\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createLogger as create, format } from 'winston';\nimport { createLoggerConsoleTransport } from './transports';\nimport type {\n Logger, LoggerCreateContext, LoggerTransport,\n} from './types';\n\nexport function createLogger(ctx: LoggerCreateContext = {}) : Logger {\n const transports : LoggerTransport[] = [\n ...(ctx.transports || []),\n ];\n\n if (transports.length === 0) {\n transports.push(createLoggerConsoleTransport());\n }\n\n return create({\n format: format.combine(\n format.errors({ stack: true }),\n format.timestamp(),\n format.simple(),\n ),\n level: 'debug',\n transports,\n // todo: deeply merge options\n ...(ctx.options || {}),\n });\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { type Factory, singa } from 'singa';\nimport type { Logger } from './types';\n\nconst instance = singa<Logger>({\n name: 'logger',\n});\n\nexport function setLoggerFactory(factory: Factory<Logger>) {\n instance.setFactory(factory);\n}\n\nexport function isLoggerUsable() {\n return instance.has() || instance.hasFactory();\n}\n\nexport function setLogger(input: Logger) {\n instance.set(input);\n}\n\nexport function useLogger() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024-2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ObjectLiteral } from '@privateaim/kit';\nimport { buildDomainEventFullName } from '@privateaim/kit';\nimport { isLoggerUsable, useLogger } from '../logger';\nimport type {\n EntityEventDestination,\n EntityEventHandleOptions,\n EntityEventPublishOptions,\n IEntityEventHandler,\n IEntityEventPublisher,\n} from './types';\n\nexport class EntityEventPublisher implements IEntityEventPublisher {\n protected handlers : Set<IEntityEventHandler>;\n\n constructor() {\n this.handlers = new Set<IEntityEventHandler>();\n }\n\n register(consumer: IEntityEventHandler) {\n this.handlers.add(consumer);\n }\n\n async safePublish<T extends ObjectLiteral = ObjectLiteral>(\n ctx: EntityEventPublishOptions<T>,\n ) : Promise<void> {\n try {\n await this.publish(ctx);\n } catch (e) {\n if (isLoggerUsable()) {\n useLogger().error(`Publishing event ${buildDomainEventFullName(ctx.metadata.ref_type, ctx.metadata.event)} failed`);\n useLogger().error(e);\n }\n }\n }\n\n async publish<T extends ObjectLiteral = ObjectLiteral>(\n ctx: EntityEventPublishOptions<T>,\n ) : Promise<void> {\n if (isLoggerUsable()) {\n useLogger()\n .debug(\n `Publishing event ${buildDomainEventFullName(ctx.metadata.ref_type, ctx.metadata.event)}`,\n );\n }\n\n let destinations : EntityEventDestination[] = [];\n if (typeof ctx.destinations === 'function') {\n destinations = ctx.destinations(ctx.data);\n } else {\n destinations = ctx.destinations;\n }\n\n const consumeContext : EntityEventHandleOptions = {\n ...ctx,\n destinations,\n };\n\n const handlers = this.handlers.values();\n while (true) {\n const handler = handlers.next();\n if (handler.done) {\n return;\n }\n\n await (handler.value as IEntityEventHandler).handle(consumeContext);\n }\n }\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@privateaim/kit';\n\nexport function transformEntityEventData<T>(input: T) : T {\n if (isObject(input)) {\n const keys = Object.keys(input);\n for (let i = 0; i < keys.length; i++) {\n const value = input[keys[i]];\n if (value instanceof Date) {\n input[keys[i]] = value.toISOString();\n }\n }\n }\n\n return input;\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nfunction stringify(input: string | string[]) {\n return typeof input === 'string' ? input : input.join('/');\n}\n\nexport function buildEntityEventRedisChannel(\n channel: string | string[],\n namespace?: string | string[],\n) {\n const channelNormalized = stringify(channel);\n\n let namespaceNormalized : string | undefined;\n if (namespace) {\n namespaceNormalized = stringify(namespace);\n }\n\n if (typeof namespaceNormalized === 'undefined') {\n return channelNormalized;\n }\n\n return `${namespaceNormalized}/${channelNormalized}`;\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Client } from 'redis-extension';\nimport type { DomainEventRecord } from '@privateaim/kit';\nimport type { EntityEventHandleOptions, IEntityEventHandler } from '../../types';\nimport { transformEntityEventData } from '../../utils';\nimport { buildEntityEventRedisChannel } from './helpers';\n\nexport class EntityEventRedisHandler implements IEntityEventHandler {\n protected driver : Client;\n\n constructor(client: Client) {\n this.driver = client;\n }\n\n async handle(ctx: EntityEventHandleOptions) : Promise<void> {\n const payload : DomainEventRecord = {\n type: ctx.metadata.ref_type,\n event: ctx.metadata.event,\n data: transformEntityEventData(ctx.data),\n };\n\n const payloadSerialized = JSON.stringify(payload);\n\n const pipeline = this.driver.pipeline();\n for (let i = 0; i < ctx.destinations.length; i++) {\n const destination = ctx.destinations[i];\n\n const key = buildEntityEventRedisChannel(\n destination.channel,\n destination.namespace,\n );\n\n pipeline.publish(key, payloadSerialized);\n }\n\n await pipeline.exec();\n }\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { buildDomainEventFullName } from '@privateaim/kit';\nimport { Emitter } from '@socket.io/redis-emitter';\nimport type { Client } from 'redis-extension';\nimport type { EntityEventHandleOptions, IEntityEventHandler } from '../../types';\nimport { transformEntityEventData } from '../../utils';\n\nexport class EntityEventSocketHandler implements IEntityEventHandler {\n protected client : Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n async handle(ctx: EntityEventHandleOptions) : Promise<void> {\n ctx.data = transformEntityEventData(ctx.data);\n\n for (let i = 0; i < ctx.destinations.length; i++) {\n const destination = ctx.destinations[i];\n\n const namespace = this.buildNamespace(destination.namespace);\n const roomName = this.buildChannel(destination.channel);\n\n const fullEventName = buildDomainEventFullName(\n ctx.metadata.ref_type,\n ctx.metadata.event,\n );\n\n const emitter = new Emitter(this.client, {}, namespace);\n\n emitter\n .in(roomName)\n .emit(fullEventName, {\n data: ctx.data,\n meta: {\n refType: ctx.metadata.ref_type,\n refId: ctx.metadata.ref_id,\n event: ctx.metadata.event,\n namespace,\n roomName,\n },\n });\n }\n }\n\n protected buildNamespace(namespace?: string | string[]) {\n if (typeof namespace === 'undefined') {\n return '/';\n }\n\n if (typeof namespace === 'string') {\n return namespace.startsWith('/') ? namespace : `/${namespace}`;\n }\n\n return `/${namespace.join('/')}`;\n }\n\n protected buildChannel(channel: string | string[]) {\n if (typeof channel === 'string') {\n return channel;\n }\n\n return channel.join('/');\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Factory } from 'singa';\nimport { singa } from 'singa';\nimport type { EntityEventPublisher } from './module';\n\nconst instance = singa<EntityEventPublisher>({\n name: 'entityEventPublisher',\n});\n\nexport function setEntityEventPublisherFactory(factory: Factory<EntityEventPublisher>) {\n instance.setFactory(factory);\n}\n\nexport function useEntityEventPublisher() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ExchangeType } from 'amqp-extension';\nimport type { Client } from 'amqp-extension';\nimport { isLoggerUsable, useLogger } from '../../services';\nimport { QueueRouterRoutingType } from './constants';\nimport { isQueueRouterPayload } from './helpers';\nimport type {\n QueueRouterHandler,\n QueueRouterHandlers,\n QueueRouterPayload, QueueRouterPublishOptions, QueueRouterRouting,\n} from './types';\n\nexport class QueueRouter {\n protected driver : Client;\n\n //----------------------------------------------------------------\n\n constructor(driver: Client) {\n this.driver = driver;\n }\n\n //----------------------------------------------------------------\n\n publish(\n message: QueueRouterPayload,\n options: QueueRouterPublishOptions = {},\n ) : Promise<boolean> {\n options.logging ??= true;\n\n let exchange : Client;\n if (message.metadata.routing.type === 'work') {\n exchange = this.driver.of({\n type: ExchangeType.DIRECT,\n name: message.metadata.routing.namespace || '',\n });\n } else {\n exchange = this.driver.of({\n type: ExchangeType.TOPIC,\n name: message.metadata.routing.namespace || 'FLAME',\n });\n }\n\n if (\n options.logging &&\n isLoggerUsable()\n ) {\n useLogger()\n .debug(`Publishing queue message ${message.type} in ${message.metadata.routing.key}`);\n }\n\n return exchange.publish(message.metadata.routing.key, message, {\n type: message.type,\n messageId: message.id,\n persistent: message.metadata.persistent ??\n message.metadata.routing.type === QueueRouterRoutingType.WORK,\n });\n }\n\n consumeAny(\n routing: QueueRouterRouting,\n fn: (payload: QueueRouterPayload) => Promise<void> | void,\n ) {\n return this.consume(routing, {\n $any: (payload) => fn(payload),\n });\n }\n\n consume(routing: QueueRouterRouting, handlers: QueueRouterHandlers) : Promise<void> {\n let exchange : Client;\n if (routing.type === 'work') {\n exchange = this.driver.of({\n type: ExchangeType.DIRECT,\n name: routing.namespace || '',\n });\n } else {\n exchange = this.driver.of({\n type: ExchangeType.TOPIC,\n name: routing.namespace || 'FLAME',\n });\n }\n\n return exchange.consume(routing.key, {\n prefetchCount: routing.type === QueueRouterRoutingType.WORK ? 1 : undefined,\n // noAck: routing.type !== QueueRouterRoutingType.WORK,\n requeueOnFailure: routing.type === QueueRouterRoutingType.WORK,\n }, {\n $any: async (input) => {\n const payload = JSON.parse(input.content.toString('utf-8'));\n if (!isQueueRouterPayload(payload)) {\n return;\n }\n\n if (input.fields.redelivered) {\n if (isLoggerUsable()) {\n useLogger()\n .debug(`Queue message ${input.properties.type} in ${routing.key} is not processed again.`);\n }\n\n return;\n }\n\n if (isLoggerUsable()) {\n useLogger()\n .debug(`Consuming queue message ${input.properties.type} in ${routing.key}`);\n }\n\n let handler : QueueRouterHandler | undefined;\n\n if (\n typeof input.properties.type === 'string' &&\n handlers[input.properties.type]\n ) {\n handler = handlers[input.properties.type];\n } else {\n handler = handlers.$any;\n }\n\n if (typeof handler !== 'function') {\n if (isLoggerUsable()) {\n useLogger()\n .debug(`No queue handler to consume message ${input.properties.type} in ${routing.key}`);\n }\n\n return;\n }\n\n try {\n await handler(payload);\n } catch (e) {\n if (isLoggerUsable()) {\n useLogger()\n .error(e);\n }\n\n throw e;\n }\n },\n });\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { singa } from 'singa';\nimport { isAmqpClientUsable, useAmqpClient } from '../../services';\nimport { QueueRouter } from './module';\n\nconst instance = singa<QueueRouter>({\n name: 'queueRouter',\n factory: () => {\n const amqp = useAmqpClient();\n\n return new QueueRouter(amqp);\n },\n});\n\nexport function isQueueRouterUsable() {\n return instance.has() || isAmqpClientUsable();\n}\n\nexport function useQueueRouter() {\n return instance.use();\n}\n"],"names":["EnvironmentName","_define_property","ComponentError","Error","input","message","cause","code","hasOwnProperty","obj","prop","Object","prototype","call","isComponentHandlerFn","ComponentHandlers","mount","key","fn","handlers","unmount","setup","keys","i","length","handler","execute","value","metadata","handle","isComponentError","isObject","isQueuePayload","data","QueueRouterRoutingType","buildQueueRouterPublishPayload","id","createNanoID","type","timestamp","Date","now","isQueueRouterPayload","instance","singa","name","setAmqpClientFactory","factory","setFactory","isAmqpClientUsable","has","hasFactory","useAmqpClient","use","setVaultFactory","isVaultClientUsable","useVaultClient","guessAuthupTokenCreatorOptions","options","vault","password","setClientAuthenticationHookFactory","isClientAuthenticationHookUsable","useClientAuthenticationHook","AuthupClient","Client","ClientAuthenticationHook","baseURL","tokenCreator","hook","attach","useAuthupClient","isAuthupClientUsable","setAuthupClientFactory","setRedisFactory","isRedisClientUsable","setRedisClient","set","useRedisClient","duplicate","useRedisPublishClient","useRedisSubscribeClient","MemoryCacheAdapter","get","ttl","drop","delete","dropMany","clear","prefix","iterator","next","done","startsWith","TTLCache","checkAgeOnGet","Infinity","RedisCacheAdapter","exists","client","milliseconds","pipeline","del","exec","flushdb","JsonAdapter","createCacheAdapter","buildCacheKey","buildRedisKeyPath","Cache","adapter","useCache","LoggerConsoleTransport","transports","Console","level","read","PRODUCTION","createLoggerConsoleTransport","LoggerMemoryTransport","Transport","log","info","items","push","createLogger","ctx","create","format","combine","errors","stack","simple","setLoggerFactory","isLoggerUsable","setLogger","useLogger","EntityEventPublisher","register","consumer","add","safePublish","publish","e","error","buildDomainEventFullName","ref_type","event","debug","destinations","consumeContext","values","Set","transformEntityEventData","toISOString","stringify","join","buildEntityEventRedisChannel","channel","namespace","channelNormalized","namespaceNormalized","EntityEventRedisHandler","payload","payloadSerialized","JSON","driver","destination","EntityEventSocketHandler","buildNamespace","roomName","buildChannel","fullEventName","emitter","Emitter","in","emit","meta","refType","refId","ref_id","setEntityEventPublisherFactory","useEntityEventPublisher","QueueRouter","logging","exchange","routing","of","ExchangeType","DIRECT","TOPIC","messageId","persistent","WORK","consumeAny","consume","$any","prefetchCount","undefined","requeueOnFailure","parse","content","toString","fields","redelivered","properties","amqp","isQueueRouterUsable","useQueueRouter"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/entity-event/handlers/index.ts"],"names":[],"mappings":"AAOA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../../src/services/entity-event/handlers/redis/helpers.ts"],"names":[],"mappings":"AAWA,wBAAgB,4BAA4B,CACxC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,UAchC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/entity-event/handlers/redis/index.ts"],"names":[],"mappings":"AAOA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Client } from 'redis-extension';
|
|
2
|
+
import type { EntityEventHandleOptions, IEntityEventHandler } from '../../types';
|
|
3
|
+
export declare class EntityEventRedisHandler implements IEntityEventHandler {
|
|
4
|
+
protected driver: Client;
|
|
5
|
+
constructor(client: Client);
|
|
6
|
+
handle(ctx: EntityEventHandleOptions): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../src/services/entity-event/handlers/redis/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,KAAK,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIjF,qBAAa,uBAAwB,YAAW,mBAAmB;IAC/D,SAAS,CAAC,MAAM,EAAG,MAAM,CAAC;gBAEd,MAAM,EAAE,MAAM;IAIpB,MAAM,CAAC,GAAG,EAAE,wBAAwB,GAAI,OAAO,CAAC,IAAI,CAAC;CAuB9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/entity-event/handlers/socket/index.ts"],"names":[],"mappings":"AAOA,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Client } from 'redis-extension';
|
|
2
|
+
import type { EntityEventHandleOptions, IEntityEventHandler } from '../../types';
|
|
3
|
+
export declare class EntityEventSocketHandler implements IEntityEventHandler {
|
|
4
|
+
protected client: Client;
|
|
5
|
+
constructor(client: Client);
|
|
6
|
+
handle(ctx: EntityEventHandleOptions): Promise<void>;
|
|
7
|
+
protected buildNamespace(namespace?: string | string[]): string;
|
|
8
|
+
protected buildChannel(channel: string | string[]): string;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../src/services/entity-event/handlers/socket/module.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGjF,qBAAa,wBAAyB,YAAW,mBAAmB;IAChE,SAAS,CAAC,MAAM,EAAG,MAAM,CAAC;gBAEd,MAAM,EAAE,MAAM;IAIpB,MAAM,CAAC,GAAG,EAAE,wBAAwB,GAAI,OAAO,CAAC,IAAI,CAAC;IA+B3D,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAYtD,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;CAOpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/entity-event/index.ts"],"names":[],"mappings":"AAOA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ObjectLiteral } from '@privateaim/kit';
|
|
2
|
+
import type { EntityEventPublishOptions, IEntityEventHandler, IEntityEventPublisher } from './types';
|
|
3
|
+
export declare class EntityEventPublisher implements IEntityEventPublisher {
|
|
4
|
+
protected handlers: Set<IEntityEventHandler>;
|
|
5
|
+
constructor();
|
|
6
|
+
register(consumer: IEntityEventHandler): void;
|
|
7
|
+
safePublish<T extends ObjectLiteral = ObjectLiteral>(ctx: EntityEventPublishOptions<T>): Promise<void>;
|
|
8
|
+
publish<T extends ObjectLiteral = ObjectLiteral>(ctx: EntityEventPublishOptions<T>): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/services/
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/services/entity-event/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,OAAO,KAAK,EAGR,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACxB,MAAM,SAAS,CAAC;AAEjB,qBAAa,oBAAqB,YAAW,qBAAqB;IAC9D,SAAS,CAAC,QAAQ,EAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC;;IAM9C,QAAQ,CAAC,QAAQ,EAAE,mBAAmB;IAIhC,WAAW,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,EACrD,GAAG,EAAE,yBAAyB,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC;IAWX,OAAO,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,EACjD,GAAG,EAAE,yBAAyB,CAAC,CAAC,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC;CA8BpB"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Factory } from 'singa';
|
|
2
|
+
import type { EntityEventPublisher } from './module';
|
|
3
|
+
export declare function setEntityEventPublisherFactory(factory: Factory<EntityEventPublisher>): void;
|
|
4
|
+
export declare function useEntityEventPublisher(): EntityEventPublisher;
|
|
5
|
+
//# sourceMappingURL=singleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../../src/services/entity-event/singleton.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAMrD,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC,QAEpF;AAED,wBAAgB,uBAAuB,yBAEtC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ObjectLiteral } from '@privateaim/kit';
|
|
2
|
+
export type EntityEventDestination = {
|
|
3
|
+
namespace?: string | string[];
|
|
4
|
+
channel: string | string[];
|
|
5
|
+
};
|
|
6
|
+
export type EntityEventDestinations = EntityEventDestination[];
|
|
7
|
+
export type EntityEventDestinationsFn<T extends ObjectLiteral = ObjectLiteral> = (data: T) => EntityEventDestination[];
|
|
8
|
+
export type EntityEventMetadata = {
|
|
9
|
+
ref_type: string;
|
|
10
|
+
ref_id?: string;
|
|
11
|
+
event: string;
|
|
12
|
+
request_path?: string | null;
|
|
13
|
+
request_method?: string | null;
|
|
14
|
+
request_ip_address?: string | null;
|
|
15
|
+
request_user_agent?: string | null;
|
|
16
|
+
actor_type?: string | null;
|
|
17
|
+
actor_id?: string | null;
|
|
18
|
+
actor_name?: string | null;
|
|
19
|
+
};
|
|
20
|
+
export type EntityEventPublishOptions<T extends ObjectLiteral = ObjectLiteral> = {
|
|
21
|
+
data: T;
|
|
22
|
+
dataPrevious?: T;
|
|
23
|
+
metadata: EntityEventMetadata;
|
|
24
|
+
destinations: EntityEventDestinations | EntityEventDestinationsFn<T>;
|
|
25
|
+
};
|
|
26
|
+
export interface IEntityEventPublisher {
|
|
27
|
+
publish(ctx: EntityEventPublishOptions): Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
export type EntityEventHandleOptions<T extends ObjectLiteral = ObjectLiteral> = {
|
|
30
|
+
data: T;
|
|
31
|
+
dataPrevious?: T;
|
|
32
|
+
metadata: EntityEventMetadata;
|
|
33
|
+
destinations: EntityEventDestinations;
|
|
34
|
+
};
|
|
35
|
+
export interface IEntityEventHandler {
|
|
36
|
+
handle(ctx: EntityEventHandleOptions): Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/entity-event/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,MAAM,sBAAsB,GAAG;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9B,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAC7B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,sBAAsB,EAAE,CAAC;AAE/D,MAAM,MAAM,yBAAyB,CACjC,CAAC,SAAS,aAAa,GAAE,aAAa,IACtC,CAAC,IAAI,EAAE,CAAC,KAAK,sBAAsB,EAAE,CAAC;AAE1C,MAAM,MAAM,mBAAmB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,EAAE,MAAM,CAAC;IAEd,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,yBAAyB,CACjC,CAAC,SAAS,aAAa,GAAG,aAAa,IACvC;IACA,IAAI,EAAE,CAAC,CAAC;IACR,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,YAAY,EAAE,uBAAuB,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAA;CACvE,CAAC;AAEF,MAAM,WAAW,qBAAqB;IAClC,OAAO,CAAC,GAAG,EAAE,yBAAyB,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D;AAED,MAAM,MAAM,wBAAwB,CAChC,CAAC,SAAS,aAAa,GAAG,aAAa,IACvC;IACA,IAAI,EAAE,CAAC,CAAC;IACR,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,YAAY,EAAE,uBAAuB,CAAA;CACxC,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAChC,MAAM,CAAC,GAAG,EAAE,wBAAwB,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/services/entity-event/utils.ts"],"names":[],"mappings":"AASA,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAI,CAAC,CAYxD"}
|
package/dist/services/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export * from './amqp';
|
|
|
2
2
|
export * from './authup';
|
|
3
3
|
export * from './authup-client-authentication-hook';
|
|
4
4
|
export * from './cache';
|
|
5
|
-
export * from './
|
|
5
|
+
export * from './entity-event';
|
|
6
6
|
export * from './logger';
|
|
7
7
|
export * from './redis';
|
|
8
8
|
export * from './vault';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/logger/index.ts"],"names":[],"mappings":"AAOA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/logger/index.ts"],"names":[],"mappings":"AAOA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/services/logger/module.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/services/logger/module.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACR,MAAM,EAAE,mBAAmB,EAC9B,MAAM,SAAS,CAAC;AAEjB,wBAAgB,YAAY,CAAC,GAAG,GAAE,mBAAwB,GAAI,MAAM,CAoBnE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Factory } from 'singa';
|
|
2
|
-
import type { Logger } from '
|
|
2
|
+
import type { Logger } from './types';
|
|
3
3
|
export declare function setLoggerFactory(factory: Factory<Logger>): void;
|
|
4
4
|
export declare function isLoggerUsable(): boolean;
|
|
5
5
|
export declare function setLogger(input: Logger): void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { transports } from 'winston';
|
|
2
|
+
import type { TransportStreamOptions } from 'winston-transport';
|
|
3
|
+
import type { LoggerTransport } from '../types';
|
|
4
|
+
export declare class LoggerConsoleTransport extends transports.Console {
|
|
5
|
+
constructor(options?: TransportStreamOptions);
|
|
6
|
+
}
|
|
7
|
+
export declare function createLoggerConsoleTransport(options?: TransportStreamOptions): LoggerTransport;
|
|
8
|
+
//# sourceMappingURL=console.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../../../src/services/logger/transports/console.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,qBAAa,sBAAuB,SAAQ,UAAU,CAAC,OAAO;gBAC9C,OAAO,GAAE,sBAA2B;CAQnD;AAED,wBAAgB,4BAA4B,CAAC,OAAO,GAAE,sBAA2B,GAAI,eAAe,CAEnG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/logger/transports/index.ts"],"names":[],"mappings":"AAOA,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/services/logger/transports/memory.ts"],"names":[],"mappings":"AAOA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAE1C,qBAAa,qBAAsB,SAAQ,SAAS;IACzC,KAAK,EAAG,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAM;IAE/C,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG,GAAG;CAK7D"}
|
|
@@ -1,8 +1,31 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
1
|
+
import type Transport from 'winston-transport';
|
|
2
|
+
import type { LoggerOptions } from 'winston';
|
|
3
|
+
export type LoggerTransport = Transport;
|
|
3
4
|
export type LoggerCreateContext = {
|
|
4
5
|
options?: Partial<LoggerOptions>;
|
|
5
|
-
transports?:
|
|
6
|
+
transports?: LoggerTransport[];
|
|
6
7
|
};
|
|
7
|
-
|
|
8
|
+
type LogEntry = {
|
|
9
|
+
/**
|
|
10
|
+
* Log message.
|
|
11
|
+
*/
|
|
12
|
+
message: string | Error;
|
|
13
|
+
[key: string]: any;
|
|
14
|
+
};
|
|
15
|
+
export interface LoggerLevelFn<OUT = any> {
|
|
16
|
+
(message: string, ...meta: Omit<LogEntry, 'message'>[]): OUT;
|
|
17
|
+
(message: LogEntry): OUT;
|
|
18
|
+
(message: string): OUT;
|
|
19
|
+
}
|
|
20
|
+
export type Logger = {
|
|
21
|
+
emerg: LoggerLevelFn<Logger>;
|
|
22
|
+
alert: LoggerLevelFn<Logger>;
|
|
23
|
+
crit: LoggerLevelFn<Logger>;
|
|
24
|
+
error: LoggerLevelFn<Logger>;
|
|
25
|
+
warn: LoggerLevelFn<Logger>;
|
|
26
|
+
notice: LoggerLevelFn<Logger>;
|
|
27
|
+
info: LoggerLevelFn<Logger>;
|
|
28
|
+
debug: LoggerLevelFn<Logger>;
|
|
29
|
+
};
|
|
30
|
+
export {};
|
|
8
31
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/logger/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/logger/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,MAAM,eAAe,GAAG,SAAS,CAAC;AAExC,MAAM,MAAM,mBAAmB,GAAG;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,eAAe,EAAE,CAAA;CACjC,CAAC;AAEF,KAAK,QAAQ,GAAG;IACZ;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACrB,CAAC;AAEF,MAAM,WAAW,aAAa,CAAC,GAAG,GAAG,GAAG;IACpC,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,GAAG,GAAG,CAAC;IAC7D,CAAC,OAAO,EAAE,QAAQ,GAAG,GAAG,CAAC;IACzB,CAAC,OAAO,EAAC,MAAM,GAAG,GAAG,CAAC;CACzB;AAED,MAAM,MAAM,MAAM,GAAG;IACjB,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAChC,CAAC"}
|