@privateaim/server-kit 0.8.21 → 0.8.22
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 +29 -0
- package/dist/core/component/caller/compound/index.d.ts +2 -0
- package/dist/core/component/caller/compound/index.d.ts.map +1 -0
- package/dist/core/component/caller/compound/module.d.ts +9 -0
- package/dist/core/component/caller/compound/module.d.ts.map +1 -0
- package/dist/core/component/caller/direct/index.d.ts +3 -0
- package/dist/core/component/caller/direct/index.d.ts.map +1 -0
- package/dist/core/component/caller/direct/module.d.ts +23 -0
- package/dist/core/component/caller/direct/module.d.ts.map +1 -0
- package/dist/core/component/caller/direct/types.d.ts +5 -0
- package/dist/core/component/caller/direct/types.d.ts.map +1 -0
- package/dist/core/component/caller/index.d.ts +6 -0
- package/dist/core/component/caller/index.d.ts.map +1 -0
- package/dist/core/component/caller/queue-dispatch/index.d.ts +2 -0
- package/dist/core/component/caller/queue-dispatch/index.d.ts.map +1 -0
- package/dist/core/component/caller/queue-dispatch/module.d.ts +9 -0
- package/dist/core/component/caller/queue-dispatch/module.d.ts.map +1 -0
- package/dist/core/component/caller/queue-dispatch/types.d.ts +6 -0
- package/dist/core/component/caller/queue-dispatch/types.d.ts.map +1 -0
- package/dist/core/component/caller/queue-worker/index.d.ts +2 -0
- package/dist/core/component/caller/queue-worker/index.d.ts.map +1 -0
- package/dist/core/component/caller/queue-worker/module.d.ts +17 -0
- package/dist/core/component/caller/queue-worker/module.d.ts.map +1 -0
- package/dist/core/component/caller/queue-worker/types.d.ts +6 -0
- package/dist/core/component/caller/queue-worker/types.d.ts.map +1 -0
- package/dist/core/component/caller/types.d.ts +13 -0
- package/dist/core/component/caller/types.d.ts.map +1 -0
- package/dist/core/component/error.d.ts +1 -1
- package/dist/core/component/error.d.ts.map +1 -1
- package/dist/core/component/handler/index.d.ts +1 -1
- package/dist/core/component/handler/index.d.ts.map +1 -1
- package/dist/core/component/handler/types.d.ts +8 -7
- package/dist/core/component/handler/types.d.ts.map +1 -1
- package/dist/core/component/index.d.ts +2 -0
- package/dist/core/component/index.d.ts.map +1 -1
- package/dist/core/component/module.d.ts +23 -0
- package/dist/core/component/module.d.ts.map +1 -0
- package/dist/core/component/type.d.ts +26 -9
- package/dist/core/component/type.d.ts.map +1 -1
- package/dist/core/index.d.ts +0 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/queue-router/types.d.ts +2 -1
- package/dist/core/queue-router/types.d.ts.map +1 -1
- package/dist/index.mjs +390 -290
- package/dist/index.mjs.map +1 -1
- package/dist/services/cache/adapters/memory.d.ts +3 -3
- package/dist/services/cache/adapters/memory.d.ts.map +1 -1
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/redis/module.d.ts +4 -2
- package/dist/services/redis/module.d.ts.map +1 -1
- package/dist/services/task-manager/helpers.d.ts +3 -0
- package/dist/services/task-manager/helpers.d.ts.map +1 -0
- package/dist/services/task-manager/index.d.ts +3 -0
- package/dist/services/task-manager/index.d.ts.map +1 -0
- package/dist/services/task-manager/module.d.ts +33 -0
- package/dist/services/task-manager/module.d.ts.map +1 -0
- package/dist/services/task-manager/types.d.ts +16 -0
- package/dist/services/task-manager/types.d.ts.map +1 -0
- package/package.json +16 -15
- package/src/core/{queue → component/caller/compound}/index.ts +2 -3
- package/src/core/component/caller/compound/module.ts +42 -0
- package/src/core/component/caller/direct/index.ts +9 -0
- package/src/core/component/caller/direct/module.ts +84 -0
- package/src/core/component/caller/direct/types.ts +13 -0
- package/src/core/component/caller/index.ts +13 -0
- package/src/core/component/caller/queue-dispatch/index.ts +8 -0
- package/src/core/component/caller/queue-dispatch/module.ts +49 -0
- package/src/core/component/caller/queue-dispatch/types.ts +13 -0
- package/src/core/component/caller/queue-worker/index.ts +8 -0
- package/src/core/component/caller/queue-worker/module.ts +91 -0
- package/src/core/component/caller/queue-worker/types.ts +13 -0
- package/src/core/component/caller/types.ts +33 -0
- package/src/core/component/error.ts +1 -1
- package/src/core/component/handler/index.ts +1 -1
- package/src/core/component/handler/types.ts +12 -10
- package/src/core/component/index.ts +2 -0
- package/src/core/component/module.ts +158 -0
- package/src/core/component/type.ts +45 -19
- package/src/core/index.ts +0 -1
- package/src/core/queue-router/types.ts +4 -2
- package/src/services/cache/adapters/memory.ts +7 -4
- package/src/services/index.ts +1 -0
- package/src/services/redis/module.ts +4 -1
- package/src/services/task-manager/helpers.ts +15 -0
- package/src/services/task-manager/index.ts +9 -0
- package/src/services/task-manager/module.ts +131 -0
- package/src/services/task-manager/types.ts +32 -0
- package/test/unit/logger.spec.ts +1 -0
- package/test/unit/memory-cache.spec.ts +1 -0
- package/test/vitest.config.ts +17 -0
- package/dist/core/component/handler/module.d.ts +0 -13
- package/dist/core/component/handler/module.d.ts.map +0 -1
- package/dist/core/queue/index.d.ts +0 -3
- package/dist/core/queue/index.d.ts.map +0 -1
- package/dist/core/queue/type.d.ts +0 -12
- package/dist/core/queue/type.d.ts.map +0 -1
- package/dist/core/queue/utils.d.ts +0 -3
- package/dist/core/queue/utils.d.ts.map +0 -1
- package/dist/index.cjs +0 -970
- package/dist/index.cjs.map +0 -1
- package/src/core/component/handler/module.ts +0 -74
- package/src/core/queue/type.ts +0 -23
- package/src/core/queue/utils.ts +0 -17
- package/test/jest.config.js +0 -33
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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 initializing : boolean;\n\n protected initialized : boolean;\n\n protected handlers: Record<string, ComponentHandlerFn | ComponentHandler>;\n\n constructor() {\n this.initializing = false;\n this.initialized = false;\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 initialize() : Promise<void> {\n if (this.initializing || this.initialized) {\n return;\n }\n\n this.initializing = true;\n\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.initialize\n ) {\n await handler.initialize();\n }\n }\n\n this.initialized = true;\n this.initializing = false;\n }\n\n async execute(\n key: string,\n value: ObjectLiteral = {},\n metadata: ObjectLiteral = {},\n ) : Promise<void> {\n await this.initialize();\n\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","initialize","initializing","initialized","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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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/constants.ts","../src/core/component/caller/compound/module.ts","../src/core/component/caller/direct/module.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/services/task-manager/helpers.ts","../src/services/task-manager/module.ts","../src/core/queue-router/module.ts","../src/core/queue-router/singleton.ts","../src/core/component/caller/queue-dispatch/module.ts","../src/core/component/caller/queue-worker/module.ts","../src/core/component/error.ts","../src/utils/has-property.ts","../src/core/component/handler/check.ts","../src/core/component/module.ts","../src/core/component/helper.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) 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 type { ComponentEventMap } from '../../type';\nimport type { ComponentCaller, ComponentCallerPayload } from '../types';\n\nexport class CompoundComponentCaller<\n EventMap extends ComponentEventMap = ComponentEventMap,\n Metadata extends ObjectLiteral = ObjectLiteral,\n> implements ComponentCaller<EventMap, Metadata> {\n protected callers : ComponentCaller<EventMap, Metadata>[];\n\n constructor(callers: ComponentCaller<EventMap, Metadata>[]) {\n this.callers = callers;\n }\n\n async call<Key extends keyof ComponentEventMap>(\n key: Key & string,\n ...payload: ComponentCallerPayload<ComponentEventMap[Key], Metadata>\n ): Promise<void> {\n const [data, metadata] = payload;\n\n for (let i = 0; i < this.callers.length; i++) {\n const caller = this.callers[i];\n\n try {\n await caller.call(key, data, metadata);\n\n return;\n } catch (e) {\n // continue;\n }\n }\n\n throw new Error('No caller could call component.');\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\nimport { createNanoID } from '@privateaim/kit';\nimport type { ComponentCaller, ComponentCallerPayload } from '../types';\nimport type { Component, ComponentEventMap, ComponentHandleOptions } from '../../type';\nimport type { ComponentDirectCallerResponse } from './types';\n\nexport class DirectComponentCaller<\n EventMap extends ComponentEventMap = ComponentEventMap,\n> implements ComponentCaller<EventMap> {\n protected component: Component<EventMap>;\n\n constructor(component : Component<EventMap>) {\n this.component = component;\n }\n\n /**\n * Call a specific handler and collect all unhandled events.\n *\n * @param key\n * @param payload\n */\n async call<Key extends keyof EventMap>(\n key: Key & string,\n ...payload: ComponentCallerPayload<EventMap[Key]>\n ): Promise<void> {\n const [data, metadata] = payload;\n\n await this.callAndWait(key, data, metadata);\n }\n\n async callWith<Key extends keyof EventMap>(\n key: Key & string,\n data: ComponentCallerPayload<EventMap[Key]>[0],\n metadata: ComponentCallerPayload<EventMap[Key]>[1],\n options: ComponentHandleOptions<EventMap>,\n ) {\n if (!this.component.handle) {\n throw new Error(`Component ${this.component.constructor.name} can not be called.`);\n }\n\n metadata.correlationId = metadata.correlationId || createNanoID();\n\n await this.component.handle(\n key,\n data,\n metadata,\n options,\n );\n }\n\n /**\n * Call a specific handler and collect all unhandled events.\n *\n * @param key\n * @param payload\n */\n async callAndWait<Key extends keyof EventMap>(\n key: Key & string,\n ...payload: ComponentCallerPayload<EventMap[Key]>\n ): Promise<ComponentDirectCallerResponse<EventMap>> {\n const [data, metadata] = payload;\n if (!this.component.handle) {\n throw new Error(`Component ${this.component.constructor.name} can not be called.`);\n }\n\n const events : ComponentDirectCallerResponse<EventMap> = {};\n\n const options : ComponentHandleOptions<EventMap> = {\n handle: (childValue, childContext) => {\n events[childContext.key] = childValue;\n },\n };\n\n await this.callWith(key, data, metadata, options);\n\n return events;\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\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 { TTLCacheOptions } 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: TTLCacheOptions<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 (\n typeof iterator.value === 'string' &&\n iterator.value.startsWith(options.prefix)\n ) {\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) 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 type { TaskEntry } from './types';\n\nexport function isTaskEntry(input: unknown) : input is TaskEntry {\n return isObject(input) &&\n typeof (input as TaskEntry).type === 'string' &&\n isObject((input as TaskEntry).data);\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 { HOUR_IN_MS, WEEK_IN_MS, createNanoID } from '@privateaim/kit';\nimport type { Cache } from '../cache';\nimport type {\n TaskEntry, TaskEntryResolved, TaskManagerCreateOptions, TaskTypeMap,\n} from './types';\nimport { isTaskEntry } from './helpers';\n\nexport class TaskManager<\n EntityMap extends TaskTypeMap = TaskTypeMap,\n> {\n protected driver : Cache;\n\n constructor(driver: Cache) {\n this.driver = driver;\n }\n\n /**\n * Store a specific job by type.\n *\n * @param type\n * @param data\n * @param options\n */\n async create<Key extends keyof EntityMap>(\n type: Key & string,\n data: EntityMap[Key],\n options: TaskManagerCreateOptions<EntityMap, Key> = {},\n ) : Promise<string> {\n let id : string;\n if (options.key) {\n id = `task:${options.key(type, data)}`;\n } else {\n id = `task:${createNanoID()}`;\n }\n\n if (options.lock) {\n const isLocked = await this.isLocked(id);\n if (isLocked) {\n return id;\n }\n }\n\n const entity : TaskEntry = {\n data,\n type,\n };\n\n await this.driver.set(id, entity, {\n ttl: WEEK_IN_MS,\n });\n\n if (options.lock) {\n await this.createLock(id);\n }\n\n return id;\n }\n\n /**\n * Get a job by id and type\n *\n * @param type\n * @param id\n * @param autoDelete\n */\n async get<Key extends keyof EntityMap>(\n type: Key & string,\n id: string,\n autoDelete: boolean = true,\n ) : Promise<EntityMap[Key]> {\n const entity = await this.resolve(id, autoDelete);\n if (!entity) {\n throw new Error(`Job with id ${id} could not be found.`);\n }\n\n if (type && entity.type !== type) {\n throw new Error(`Job type ${entity.type} does not not match with ${type}`);\n }\n\n return entity.data as EntityMap[Key];\n }\n\n /**\n * Find a random job.\n *\n * @param id\n * @param autoDelete\n */\n async resolve(\n id: string,\n autoDelete: boolean = true,\n ) : Promise<TaskEntryResolved<EntityMap> | undefined> {\n const entity : TaskEntry | undefined = await this.driver.get(id);\n if (!entity || !isTaskEntry(entity)) {\n return undefined;\n }\n\n await this.clearLock(id);\n\n if (autoDelete) {\n await this.driver.drop(id);\n }\n\n return entity as TaskEntryResolved<EntityMap>;\n }\n\n // -------------------------------------------------\n\n protected async createLock(id: string) {\n await this.driver.set(`taskLock:${id}`, true, {\n ttl: HOUR_IN_MS,\n });\n }\n\n protected async clearLock(id: string) {\n await this.driver.drop(`taskLock:${id}`);\n }\n\n protected async isLocked(id: string) : Promise<boolean> {\n const isActive = await this.driver.get(`taskLock:${id}`);\n\n return !!isActive;\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 { 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","/*\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 { ComponentEventMap } from '../../type';\nimport type { ComponentCaller, ComponentCallerPayload } from '../types';\nimport { buildQueueRouterPublishPayload, isQueueRouterUsable, useQueueRouter } from '../../../queue-router';\nimport { useLogger } from '../../../../services';\nimport type { QueueDispatchComponentCallerOptions } from './types';\n\nexport class QueueDispatchComponentCaller<\n EventMap extends ComponentEventMap = ComponentEventMap,\n> implements ComponentCaller<EventMap> {\n protected options : QueueDispatchComponentCallerOptions;\n\n constructor(options: QueueDispatchComponentCallerOptions) {\n this.options = options;\n }\n\n async call<K extends keyof EventMap>(\n type: K & string,\n ...payload: ComponentCallerPayload<EventMap[K]>\n ): Promise<void> {\n const [data, metadata] = payload;\n\n if (!isQueueRouterUsable()) {\n useLogger().warn(`Can not publish ${type} event.`);\n return;\n }\n\n const client = useQueueRouter();\n await client.publish(\n buildQueueRouterPublishPayload({\n type,\n data,\n metadata: {\n ...metadata,\n routing: this.options.queue,\n },\n }),\n {\n logging: this.options.logging ?? true,\n },\n );\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\nimport type { Component, ComponentEventMap, ComponentHandleOptions } from '../../type';\nimport { buildQueueRouterPublishPayload, isQueueRouterUsable, useQueueRouter } from '../../../queue-router';\nimport type { ComponentCaller, ComponentCallerPayload } from '../types';\nimport type { QueueSelfComponentCallerOptions } from './types';\nimport { useLogger } from '../../../../services';\n\nexport class QueueWorkerComponentCaller<\n EventMap extends ComponentEventMap = ComponentEventMap,\n> implements ComponentCaller<EventMap>, Component<EventMap> {\n protected component: Component<EventMap>;\n\n protected options: QueueSelfComponentCallerOptions;\n\n constructor(component: Component<EventMap>, options: QueueSelfComponentCallerOptions) {\n this.component = component;\n this.options = options;\n }\n\n async start() {\n if (!isQueueRouterUsable()) {\n useLogger().warn(`Can not consume queue for component ${this.component.constructor.name}`);\n return;\n }\n\n const client = useQueueRouter();\n await client.consumeAny(\n this.options.consumeQueue,\n async (payload) => {\n await this.call(payload.type, payload.data, payload.metadata);\n },\n );\n }\n\n /**\n * Call a specific handler and collect all unhandled events.\n *\n * @param key\n * @param payload\n */\n async call<Key extends keyof EventMap>(\n key: Key & string,\n ...payload: ComponentCallerPayload<EventMap[Key]>\n ): Promise<void> {\n const [data, metadata] = payload;\n if (!this.component.handle) {\n throw new Error(`Component ${this.component.constructor.name} can not be called.`);\n }\n\n const client = useQueueRouter();\n const options : ComponentHandleOptions<EventMap> = {\n handle: async (\n childValue,\n childContext,\n ) => {\n if (this.options.publishQueue) {\n /**\n *\n * publish unhandled requests to publish queue.\n */\n await client.publish(buildQueueRouterPublishPayload({\n type: childContext.key,\n data: childValue,\n metadata: {\n ...(metadata || {}),\n ...childContext.metadata,\n routing: this.options.publishQueue,\n },\n }));\n } else {\n useLogger().warn(\n `Component ${this.component.constructor.name} event ${childContext.key} could not be handled.`,\n );\n }\n },\n };\n\n await this.component.handle(\n key,\n data,\n metadata,\n options,\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 type { ComponentErrorOptions } from './type';\n\nexport class ComponentError extends Error {\n public readonly 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 {\n Component, ComponentEventMap, ComponentHandleOptions, ComponentHandlers,\n} from './type';\nimport type {\n ComponentHandler, ComponentHandlerContext, ComponentHandlerFn,\n} from './handler';\n\nexport abstract class BaseComponent<\n EventMap extends ComponentEventMap = ComponentEventMap,\n> implements Component<EventMap> {\n private initializePromise : Promise<void> | undefined;\n\n protected initialized : boolean;\n\n protected handlers: ComponentHandlers<EventMap>;\n\n protected constructor() {\n this.initializePromise = undefined;\n this.initialized = false;\n this.handlers = new Map();\n }\n\n mount<Key extends keyof EventMap>(\n key: Key,\n fn: ComponentHandler<EventMap, Key> | ComponentHandlerFn<EventMap, Key>\n ) : void;\n\n mount(\n key: '*',\n fn: ComponentHandler<EventMap> | ComponentHandlerFn<EventMap>\n ) : void;\n\n mount(\n key: PropertyKey,\n fn: ComponentHandler<EventMap> | ComponentHandlerFn<EventMap>,\n ) : void {\n this.handlers.set(key as keyof EventMap, fn);\n }\n\n unmount<Key extends keyof EventMap>(key: Key) {\n this.handlers.delete(key);\n }\n\n async initialize() : Promise<void> {\n if (this.initialized) {\n return Promise.resolve();\n }\n\n if (this.initializePromise) {\n return this.initializePromise;\n }\n\n const promises: Promise<void>[] = [];\n const keys = Array.from(this.handlers.keys());\n for (let i = 0; i < keys.length; i++) {\n const handler = this.handlers.get(keys[i]);\n\n if (\n typeof handler !== 'function' &&\n handler.initialize\n ) {\n promises.push(Promise.resolve().then(() => handler.initialize()));\n }\n }\n\n this.initializePromise = new Promise<void>((resolve, reject) => {\n Promise.all(promises)\n .then(() => resolve())\n .catch((err) => reject(err));\n });\n\n this.initializePromise.finally(() => {\n setTimeout(() => {\n this.initialized = true;\n this.initializePromise = undefined;\n }, 0);\n });\n\n return this.initializePromise;\n }\n\n /**\n * Handle specific component event.\n *\n * @param key\n * @param data\n * @param metadata\n * @param options\n */\n async handle<Key extends keyof EventMap>(\n key: Key & string,\n data: EventMap[Key][0],\n metadata: EventMap[Key][1] = {},\n options: ComponentHandleOptions<EventMap> = {},\n ) : Promise<void> {\n await this.initialize();\n\n const context : ComponentHandlerContext<EventMap, Key> = {\n key,\n metadata,\n handle: (\n childKey,\n childData,\n childMetadata,\n ) => {\n this.handle(\n childKey as Key & string,\n childData as EventMap[Key][0],\n {\n ...metadata,\n ...(childMetadata || {}),\n } as EventMap[Key][1],\n {\n ...options,\n ...(options || {}),\n },\n );\n },\n };\n\n let handler = this.handlers.get(key) as ComponentHandler<EventMap, Key> |\n ComponentHandlerFn<EventMap, Key>;\n\n if (handler) {\n if (typeof handler === 'function') {\n return handler(data, context);\n }\n\n return handler.handle(data, context);\n }\n\n handler = this.handlers.get('*') as ComponentHandler<EventMap, Key> |\n ComponentHandlerFn<EventMap, Key>;\n\n if (handler) {\n if (typeof handler === 'function') {\n return handler(data, context);\n }\n\n return handler.handle(data, context);\n }\n\n if (options.handle) {\n return options.handle(data, context);\n }\n\n return Promise.resolve();\n }\n\n abstract start() : Promise<void> | void;\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"],"names":["EnvironmentName","CompoundComponentCaller","callers","call","key","payload","data","metadata","i","length","caller","e","Error","DirectComponentCaller","component","callAndWait","callWith","options","handle","name","correlationId","createNanoID","events","childValue","childContext","QueueRouterRoutingType","buildQueueRouterPublishPayload","input","id","type","timestamp","Date","now","isQueueRouterPayload","isObject","hasOwnProperty","instance","singa","setAmqpClientFactory","factory","setFactory","isAmqpClientUsable","has","hasFactory","useAmqpClient","use","setVaultFactory","isVaultClientUsable","useVaultClient","guessAuthupTokenCreatorOptions","vault","password","setClientAuthenticationHookFactory","isClientAuthenticationHookUsable","useClientAuthenticationHook","AuthupClient","Client","ClientAuthenticationHook","baseURL","tokenCreator","hook","attach","useAuthupClient","isAuthupClientUsable","setAuthupClientFactory","setRedisFactory","isRedisClientUsable","setRedisClient","set","useRedisClient","duplicate","useRedisPublishClient","useRedisSubscribeClient","MemoryCacheAdapter","TTLCache","checkAgeOnGet","ttl","Infinity","get","value","drop","delete","dropMany","keys","clear","prefix","iterator","next","done","startsWith","RedisCacheAdapter","client","JsonAdapter","exists","milliseconds","pipeline","del","exec","flushdb","createCacheAdapter","buildCacheKey","buildRedisKeyPath","Cache","adapter","useCache","LoggerConsoleTransport","transports","Console","level","read","PRODUCTION","createLoggerConsoleTransport","LoggerMemoryTransport","Transport","items","log","info","push","createLogger","ctx","create","format","combine","errors","stack","simple","setLoggerFactory","isLoggerUsable","setLogger","useLogger","EntityEventPublisher","handlers","Set","register","consumer","add","safePublish","publish","error","buildDomainEventFullName","ref_type","event","debug","destinations","consumeContext","values","handler","transformEntityEventData","Object","toISOString","stringify","join","buildEntityEventRedisChannel","channel","namespace","channelNormalized","namespaceNormalized","EntityEventRedisHandler","driver","payloadSerialized","JSON","destination","EntityEventSocketHandler","buildNamespace","roomName","buildChannel","fullEventName","emitter","Emitter","in","emit","meta","refType","refId","ref_id","setEntityEventPublisherFactory","useEntityEventPublisher","isTaskEntry","TaskManager","lock","isLocked","entity","WEEK_IN_MS","createLock","autoDelete","resolve","undefined","clearLock","HOUR_IN_MS","isActive","QueueRouter","message","logging","exchange","routing","of","ExchangeType","DIRECT","TOPIC","messageId","persistent","WORK","consumeAny","fn","consume","$any","prefetchCount","requeueOnFailure","parse","content","toString","fields","redelivered","properties","amqp","isQueueRouterUsable","useQueueRouter","QueueDispatchComponentCaller","warn","queue","QueueWorkerComponentCaller","start","consumeQueue","publishQueue","ComponentError","code","cause","obj","prop","prototype","isComponentHandler","execute","isComponentHandlerFn","BaseComponent","initializePromise","initialized","Map","mount","unmount","initialize","Promise","promises","Array","from","then","reject","all","catch","err","finally","setTimeout","context","childKey","childData","childMetadata","isComponentError"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import TTLCache from '@isaacs/ttlcache';
|
|
1
|
+
import type { TTLCacheOptions } from '@isaacs/ttlcache';
|
|
2
|
+
import { TTLCache } from '@isaacs/ttlcache';
|
|
3
3
|
import type { CacheClearOptions, CacheSetOptions } from '../types';
|
|
4
4
|
import type { CacheAdapter } from './types';
|
|
5
5
|
export declare class MemoryCacheAdapter<VALUE = any> implements CacheAdapter {
|
|
6
6
|
protected instance: TTLCache<string, VALUE>;
|
|
7
|
-
constructor(options?:
|
|
7
|
+
constructor(options?: TTLCacheOptions<string, VALUE>);
|
|
8
8
|
get(key: string): Promise<VALUE>;
|
|
9
9
|
has(key: string): Promise<boolean>;
|
|
10
10
|
set(key: string, value: VALUE, options: CacheSetOptions): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/services/cache/adapters/memory.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/services/cache/adapters/memory.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,qBAAa,kBAAkB,CAC3B,KAAK,GAAG,GAAG,CACb,YAAW,YAAY;IACrB,SAAS,CAAC,QAAQ,EAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAEjC,OAAO,GAAE,eAAe,CAAC,MAAM,EAAE,KAAK,CAAM;IAQlD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAIhC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAI,OAAO,CAAC,OAAO,CAAC;IAInC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAI,OAAO,CAAC,IAAI,CAAC;IAMxC,KAAK,CAAC,OAAO,GAAE,iBAAsB,GAAI,OAAO,CAAC,IAAI,CAAC;CAoB/D"}
|
package/dist/services/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAOA,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,qCAAqC,CAAC;AACpD,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAOA,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,qCAAqC,CAAC;AACpD,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import type { ClientOptions as RedisClientOptions } from 'redis-extension';
|
|
2
|
+
import { Client as RedisClient, createClient as createRedisClient } from 'redis-extension';
|
|
3
|
+
export { createRedisClient, RedisClient, };
|
|
4
|
+
export type { RedisClientOptions, };
|
|
3
5
|
//# sourceMappingURL=module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/services/redis/module.ts"],"names":[],"mappings":"AAOA,OAAO,
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/services/redis/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,IAAI,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EACH,MAAM,IAAI,WAAW,EACrB,YAAY,IAAI,iBAAiB,EACpC,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACH,iBAAiB,EACjB,WAAW,GACd,CAAC;AAEF,YAAY,EACR,kBAAkB,GACrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/services/task-manager/helpers.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAI,KAAK,IAAI,SAAS,CAI/D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/task-manager/index.ts"],"names":[],"mappings":"AAOA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Cache } from '../cache';
|
|
2
|
+
import type { TaskEntryResolved, TaskManagerCreateOptions, TaskTypeMap } from './types';
|
|
3
|
+
export declare class TaskManager<EntityMap extends TaskTypeMap = TaskTypeMap> {
|
|
4
|
+
protected driver: Cache;
|
|
5
|
+
constructor(driver: Cache);
|
|
6
|
+
/**
|
|
7
|
+
* Store a specific job by type.
|
|
8
|
+
*
|
|
9
|
+
* @param type
|
|
10
|
+
* @param data
|
|
11
|
+
* @param options
|
|
12
|
+
*/
|
|
13
|
+
create<Key extends keyof EntityMap>(type: Key & string, data: EntityMap[Key], options?: TaskManagerCreateOptions<EntityMap, Key>): Promise<string>;
|
|
14
|
+
/**
|
|
15
|
+
* Get a job by id and type
|
|
16
|
+
*
|
|
17
|
+
* @param type
|
|
18
|
+
* @param id
|
|
19
|
+
* @param autoDelete
|
|
20
|
+
*/
|
|
21
|
+
get<Key extends keyof EntityMap>(type: Key & string, id: string, autoDelete?: boolean): Promise<EntityMap[Key]>;
|
|
22
|
+
/**
|
|
23
|
+
* Find a random job.
|
|
24
|
+
*
|
|
25
|
+
* @param id
|
|
26
|
+
* @param autoDelete
|
|
27
|
+
*/
|
|
28
|
+
resolve(id: string, autoDelete?: boolean): Promise<TaskEntryResolved<EntityMap> | undefined>;
|
|
29
|
+
protected createLock(id: string): Promise<void>;
|
|
30
|
+
protected clearLock(id: string): Promise<void>;
|
|
31
|
+
protected isLocked(id: string): Promise<boolean>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/services/task-manager/module.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EACG,iBAAiB,EAAE,wBAAwB,EAAE,WAAW,EACtE,MAAM,SAAS,CAAC;AAGjB,qBAAa,WAAW,CACpB,SAAS,SAAS,WAAW,GAAG,WAAW;IAE3C,SAAS,CAAC,MAAM,EAAG,KAAK,CAAC;gBAEb,MAAM,EAAE,KAAK;IAIzB;;;;;;OAMG;IACG,MAAM,CAAC,GAAG,SAAS,MAAM,SAAS,EACpC,IAAI,EAAE,GAAG,GAAG,MAAM,EAClB,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EACpB,OAAO,GAAE,wBAAwB,CAAC,SAAS,EAAE,GAAG,CAAM,GACtD,OAAO,CAAC,MAAM,CAAC;IA+BnB;;;;;;OAMG;IACG,GAAG,CAAC,GAAG,SAAS,MAAM,SAAS,EACjC,IAAI,EAAE,GAAG,GAAG,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,UAAU,GAAE,OAAc,GAC1B,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAa3B;;;;;OAKG;IACG,OAAO,CACT,EAAE,EAAE,MAAM,EACV,UAAU,GAAE,OAAc,GAC1B,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;cAiBrC,UAAU,CAAC,EAAE,EAAE,MAAM;cAMrB,SAAS,CAAC,EAAE,EAAE,MAAM;cAIpB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAI,OAAO,CAAC,OAAO,CAAC;CAK1D"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ObjectLiteral } from '../../type';
|
|
2
|
+
export type TaskEntry<Data extends ObjectLiteral = ObjectLiteral, Key extends string = string> = {
|
|
3
|
+
data: Data;
|
|
4
|
+
type: Key;
|
|
5
|
+
};
|
|
6
|
+
export type TaskTypeMap = {
|
|
7
|
+
[key: string]: ObjectLiteral;
|
|
8
|
+
};
|
|
9
|
+
export type TaskEntryResolved<EntityMap extends TaskTypeMap = TaskTypeMap> = {
|
|
10
|
+
[Key in keyof EntityMap]?: TaskEntry<EntityMap[Key], Key & string>;
|
|
11
|
+
}[keyof EntityMap];
|
|
12
|
+
export type TaskManagerCreateOptions<EntityMap extends ObjectLiteral = ObjectLiteral, Key extends keyof EntityMap = keyof EntityMap> = {
|
|
13
|
+
lock?: boolean;
|
|
14
|
+
key?: (type: Key & string, data: EntityMap[Key]) => string;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/task-manager/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,SAAS,CACjB,IAAI,SAAS,aAAa,GAAG,aAAa,EAC1C,GAAG,SAAS,MAAM,GAAG,MAAM,IAC3B;IACA,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,GAAG,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAA;CAC/B,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,SAAS,SAAS,WAAW,GAAG,WAAW,IAAI;KACxE,GAAG,IAAI,MAAM,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC;CACrE,CAAC,MAAM,SAAS,CAAC,CAAC;AAEnB,MAAM,MAAM,wBAAwB,CAChC,SAAS,SAAS,aAAa,GAAG,aAAa,EAC/C,GAAG,SAAS,MAAM,SAAS,GAAG,MAAM,SAAS,IAC7C;IACA,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,MAAM,CAAA;CAC7D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@privateaim/server-kit",
|
|
3
|
-
"
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "0.8.22",
|
|
5
|
+
"module": "./dist/index.mjs",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
4
7
|
"exports": {
|
|
5
8
|
"./package.json": "./package.json",
|
|
6
9
|
".": {
|
|
@@ -9,9 +12,6 @@
|
|
|
9
12
|
"require": "./dist/index.cjs"
|
|
10
13
|
}
|
|
11
14
|
},
|
|
12
|
-
"main": "./dist/index.cjs",
|
|
13
|
-
"module": "./dist/index.mjs",
|
|
14
|
-
"types": "./dist/index.d.ts",
|
|
15
15
|
"author": {
|
|
16
16
|
"name": "Peter Placzek",
|
|
17
17
|
"email": "contact@tada5hi.net",
|
|
@@ -23,34 +23,35 @@
|
|
|
23
23
|
"build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json",
|
|
24
24
|
"build:js": "rollup -c",
|
|
25
25
|
"build": "rimraf ./dist && cross-env NODE_ENV=production npm run build:js && npm run build:types",
|
|
26
|
-
"test": "cross-env NODE_ENV=test
|
|
27
|
-
"test:coverage": "
|
|
26
|
+
"test": "cross-env NODE_ENV=test vitest run --config test/vitest.config.ts",
|
|
27
|
+
"test:coverage": "cross-env NODE_ENV=test vitest run --config test/vitest.config.ts --coverage"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@ebec/http": "^2.3.0",
|
|
31
|
-
"@isaacs/ttlcache": "^1.4
|
|
32
|
-
"@privateaim/kit": "^0.8.
|
|
31
|
+
"@isaacs/ttlcache": "^2.1.4",
|
|
32
|
+
"@privateaim/kit": "^0.8.22",
|
|
33
33
|
"@socket.io/redis-emitter": "^5.1.0",
|
|
34
34
|
"envix": "^1.5.0",
|
|
35
35
|
"hapic": "^2.7.0",
|
|
36
36
|
"singa": "^1.1.0",
|
|
37
37
|
"triple-beam": "^1.4.1",
|
|
38
|
-
"winston": "^3.
|
|
38
|
+
"winston": "^3.19.0",
|
|
39
39
|
"winston-transport": "^4.9.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@authup/core-http-kit": "^1.0.0-beta.
|
|
42
|
+
"@authup/core-http-kit": "^1.0.0-beta.28",
|
|
43
43
|
"@hapic/vault": "^2.3.9",
|
|
44
44
|
"amqp-extension": "^4.0.0",
|
|
45
|
-
"redis-extension": "^2.0.
|
|
46
|
-
"typeorm-extension": "^3.7.
|
|
45
|
+
"redis-extension": "^2.0.4",
|
|
46
|
+
"typeorm-extension": "^3.7.2",
|
|
47
|
+
"vitest": "^4.0.14"
|
|
47
48
|
},
|
|
48
49
|
"peerDependencies": {
|
|
49
|
-
"@authup/core-http-kit": "^1.0.0-beta.
|
|
50
|
+
"@authup/core-http-kit": "^1.0.0-beta.28",
|
|
50
51
|
"@hapic/vault": "^2.3.9",
|
|
51
52
|
"amqp-extension": "^4.0.0",
|
|
52
|
-
"redis-extension": "^2.0.
|
|
53
|
-
"typeorm-extension": "^3.7.
|
|
53
|
+
"redis-extension": "^2.0.4",
|
|
54
|
+
"typeorm-extension": "^3.7.2"
|
|
54
55
|
},
|
|
55
56
|
"publishConfig": {
|
|
56
57
|
"access": "public"
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) 2025.
|
|
3
3
|
* Author Peter Placzek (tada5hi)
|
|
4
4
|
* For the full copyright and license information,
|
|
5
5
|
* view the LICENSE file that was distributed with this source code.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
export * from './
|
|
9
|
-
export * from './utils';
|
|
8
|
+
export * from './module';
|