@privateaim/server-kit 0.8.3 → 0.8.4
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 +21 -0
- package/dist/index.cjs +7 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.map +1 -1
- package/dist/services/redis/module.d.ts +2 -2
- package/dist/services/redis/module.d.ts.map +1 -1
- package/package.json +9 -9
- package/src/services/redis/module.ts +0 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.8.4](https://github.com/PrivateAIM/hub/compare/v0.8.3...v0.8.4) (2024-10-24)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* bump authup & implement async policy & permission evaluation ([#807](https://github.com/PrivateAIM/hub/issues/807)) ([d065562](https://github.com/PrivateAIM/hub/commit/d065562585076e26553ad5a39f4a5789f7e18f24))
|
|
9
|
+
* bump authup & vuecs packages + refactored navigation ([c4db8d5](https://github.com/PrivateAIM/hub/commit/c4db8d51588b3d701815e2ba2f9b80e594f3663f))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* **deps:** bump typeorm-extension from 3.6.1 to 3.6.2 ([#810](https://github.com/PrivateAIM/hub/issues/810)) ([c9af9ae](https://github.com/PrivateAIM/hub/commit/c9af9aea537c4a51aae13f1059c1565180045a83))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Dependencies
|
|
18
|
+
|
|
19
|
+
* The following workspace dependencies were updated
|
|
20
|
+
* dependencies
|
|
21
|
+
* @privateaim/core-kit bumped from ^0.8.3 to ^0.8.4
|
|
22
|
+
* @privateaim/kit bumped from ^0.8.3 to ^0.8.4
|
|
23
|
+
|
|
3
24
|
## [0.8.3](https://github.com/PrivateAIM/hub/compare/v0.8.2...v0.8.3) (2024-09-19)
|
|
4
25
|
|
|
5
26
|
|
package/dist/index.cjs
CHANGED
|
@@ -116,11 +116,11 @@ function isQueuePayload(input) {
|
|
|
116
116
|
* Author Peter Placzek (tada5hi)
|
|
117
117
|
* For the full copyright and license information,
|
|
118
118
|
* view the LICENSE file that was distributed with this source code.
|
|
119
|
-
*/
|
|
120
|
-
(function(QueueRouterRoutingType) {
|
|
119
|
+
*/ var QueueRouterRoutingType = /*#__PURE__*/ function(QueueRouterRoutingType) {
|
|
121
120
|
QueueRouterRoutingType["WORK"] = "work";
|
|
122
121
|
QueueRouterRoutingType["PUB_SUB"] = "pubSub";
|
|
123
|
-
|
|
122
|
+
return QueueRouterRoutingType;
|
|
123
|
+
}({});
|
|
124
124
|
|
|
125
125
|
function buildQueueRouterPublishPayload(input) {
|
|
126
126
|
return {
|
|
@@ -338,7 +338,7 @@ class QueueRouter {
|
|
|
338
338
|
return exchange.publish(message.metadata.routing.key, message, {
|
|
339
339
|
type: message.type,
|
|
340
340
|
messageId: message.id,
|
|
341
|
-
persistent: message.metadata.persistent ?? message.metadata.routing.type ===
|
|
341
|
+
persistent: message.metadata.persistent ?? message.metadata.routing.type === QueueRouterRoutingType.WORK
|
|
342
342
|
});
|
|
343
343
|
}
|
|
344
344
|
consume(routing, handlers) {
|
|
@@ -355,9 +355,9 @@ class QueueRouter {
|
|
|
355
355
|
});
|
|
356
356
|
}
|
|
357
357
|
return exchange.consume(routing.key, {
|
|
358
|
-
prefetchCount: routing.type ===
|
|
358
|
+
prefetchCount: routing.type === QueueRouterRoutingType.WORK ? 1 : undefined,
|
|
359
359
|
// noAck: routing.type !== QueueRouterRoutingType.WORK,
|
|
360
|
-
requeueOnFailure: routing.type ===
|
|
360
|
+
requeueOnFailure: routing.type === QueueRouterRoutingType.WORK
|
|
361
361
|
}, {
|
|
362
362
|
$any: async (input)=>{
|
|
363
363
|
const payload = JSON.parse(input.content.toString('utf-8'));
|
|
@@ -500,10 +500,6 @@ Object.defineProperty(exports, "mountAuthupClientResponseErrorTokenHook", {
|
|
|
500
500
|
enumerable: true,
|
|
501
501
|
get: function () { return coreHttpKit.mountClientResponseErrorTokenHook; }
|
|
502
502
|
});
|
|
503
|
-
Object.defineProperty(exports, "RedisCache", {
|
|
504
|
-
enumerable: true,
|
|
505
|
-
get: function () { return redisExtension.Cache; }
|
|
506
|
-
});
|
|
507
503
|
Object.defineProperty(exports, "RedisClient", {
|
|
508
504
|
enumerable: true,
|
|
509
505
|
get: function () { return redisExtension.Client; }
|
|
@@ -512,10 +508,6 @@ Object.defineProperty(exports, "RedisClientOptions", {
|
|
|
512
508
|
enumerable: true,
|
|
513
509
|
get: function () { return redisExtension.ClientOptions; }
|
|
514
510
|
});
|
|
515
|
-
Object.defineProperty(exports, "RedisKeyPathID", {
|
|
516
|
-
enumerable: true,
|
|
517
|
-
get: function () { return redisExtension.KeyPathID; }
|
|
518
|
-
});
|
|
519
511
|
Object.defineProperty(exports, "buildRedisKeyPath", {
|
|
520
512
|
enumerable: true,
|
|
521
513
|
get: function () { return redisExtension.buildKeyPath; }
|
|
@@ -528,6 +520,7 @@ exports.AuthupClient = AuthupClient;
|
|
|
528
520
|
exports.ComponentError = ComponentError;
|
|
529
521
|
exports.MemoryCache = MemoryCache;
|
|
530
522
|
exports.QueueRouter = QueueRouter;
|
|
523
|
+
exports.QueueRouterRoutingType = QueueRouterRoutingType;
|
|
531
524
|
exports.buildQueueRouterPublishPayload = buildQueueRouterPublishPayload;
|
|
532
525
|
exports.createLogger = createLogger;
|
|
533
526
|
exports.guessAuthupTokenCreatorOptions = guessAuthupTokenCreatorOptions;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/core/memory-cache/module.ts","../src/core/memory-cache/singleton.ts","../src/core/component/error.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/module.ts","../src/services/vault/singleton.ts","../src/services/authup/helpers.ts","../src/services/authup/module.ts","../src/services/authup/singleton.ts","../src/services/logger/module.ts","../src/services/logger/singleton.ts","../src/services/redis/singleton.ts","../src/services/redis/singleton-publish.ts","../src/services/redis/singleton-subscribe.ts","../src/core/queue-router/module.ts","../src/core/queue-router/singleton.ts","../src/domain-event/utils.ts","../src/domain-event/redis/publish.ts","../src/domain-event/socket/publish.ts","../src/domain-event/publish.ts","../src/utils/has-property.ts"],"sourcesContent":["/*\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 TTLCache from '@isaacs/ttlcache';\n\ntype BlockerOptions = {\n ttl: number;\n};\n\nexport class MemoryCache<\n KEY extends string = string,\n VALUE = any,\n> {\n protected options : BlockerOptions;\n\n protected cache : TTLCache<KEY, VALUE>;\n\n constructor(options: Partial<BlockerOptions> = {}) {\n this.options = {\n // 60 seconds\n ttl: 1000 * 60,\n ...options,\n };\n this.cache = new TTLCache<KEY, VALUE>();\n }\n\n set(id: KEY, value: VALUE, options: BlockerOptions) {\n this.cache.set(id, value, {\n ttl: options.ttl,\n });\n }\n\n get(id: KEY): VALUE | undefined {\n return this.cache.get(id);\n }\n\n del(id: KEY) : void {\n this.cache.delete(id);\n }\n\n has(id: KEY) : boolean {\n return this.cache.has(id);\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 { MemoryCache } from './module';\n\nconst instance = singa<MemoryCache>({\n name: 'queueRouter',\n factory: () => new MemoryCache(),\n});\n\nexport function useMemoryCache() {\n return instance.use();\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) 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 { ClientResponseErrorTokenHookOptions } from '@authup/core-http-kit';\nimport {\n Client, mountClientResponseErrorTokenHook as mountAuthupClientResponseErrorTokenHook,\n mountClientResponseErrorTokenHook,\n} from '@authup/core-http-kit';\nimport { guessAuthupTokenCreatorOptions } from './helpers';\nimport type { AuthupClientOptions } from './types';\n\nexport {\n mountAuthupClientResponseErrorTokenHook,\n};\n\nexport class AuthupClient extends Client {\n constructor(options: AuthupClientOptions = {}) {\n super(options);\n\n let tokenHook : ClientResponseErrorTokenHookOptions;\n if (options.tokenHook) {\n tokenHook = options.tokenHook;\n tokenHook.baseURL = tokenHook.baseURL || options.baseURL;\n } else {\n const tokenCreator = guessAuthupTokenCreatorOptions();\n tokenHook = {\n baseURL: options.baseURL,\n tokenCreator,\n };\n }\n\n mountClientResponseErrorTokenHook(this, tokenHook);\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 { read } from 'envix';\nimport path from 'node:path';\nimport { EnvironmentName } from 'typeorm-extension';\nimport type { Logger } from 'winston';\nimport { createLogger as create, format, transports } from 'winston';\nimport type { LoggerCreateContext, LoggerTransports } from './types';\n\nexport function createLogger(ctx: LoggerCreateContext = {}) : Logger {\n const { directory, options = {} } = ctx;\n\n let loggerTransports : LoggerTransports;\n if (read('env') === EnvironmentName.PRODUCTION) {\n loggerTransports = [\n new transports.Console({\n level: 'info',\n }),\n new transports.File({\n filename: path.join(directory || process.cwd(), 'access.log'),\n level: 'http',\n maxsize: 10 * 1024 * 1024, // 10MB\n maxFiles: 5,\n }),\n new transports.File({\n filename: path.join(directory || process.cwd(), 'error.log'),\n level: 'warn',\n maxsize: 10 * 1024 * 1024, // 10MB\n maxFiles: 5,\n }),\n ];\n } else {\n loggerTransports = [\n new transports.Console({\n level: 'debug',\n }),\n ];\n }\n\n return create({\n format: format.combine(\n format.errors({ stack: true }),\n format.timestamp(),\n format.colorize(),\n format.simple(),\n ),\n level: 'debug',\n transports: loggerTransports,\n // todo: deeply merge options\n ...(options || {}),\n });\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { type Factory, singa } from 'singa';\nimport type { Logger } from 'winston';\n\nconst instance = singa<Logger>({\n name: 'logger',\n});\n\nexport function setLoggerFactory(factory: Factory<Logger>) {\n instance.setFactory(factory);\n}\n\nexport function isLoggerUsable() {\n return instance.has() || instance.hasFactory();\n}\n\nexport function setLogger(input: Logger) {\n instance.set(input);\n}\n\nexport function useLogger() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024.\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.\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, 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(message: QueueRouterPayload) : Promise<boolean> {\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 (isLoggerUsable()) {\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 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 await handler(payload);\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) 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';\nimport type { DomainEventChannelName } from './type';\n\nexport function transformDomainEventData<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\nexport function buildDomainEventChannelName(\n input: DomainEventChannelName,\n id?: string | number,\n) : string {\n if (typeof input === 'string') {\n return input;\n }\n\n return input(id);\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 { DomainEventName } from '@privateaim/core-kit';\nimport type { DomainsEventContext } from '@privateaim/core-kit';\nimport type { Client } from 'redis-extension';\nimport type { DomainEventDestinations } from '../type';\nimport { buildDomainEventChannelName, transformDomainEventData } from '../utils';\n\nexport async function publishDomainRedisEvent(\n client: Client,\n context: DomainsEventContext,\n destinations: DomainEventDestinations,\n) : Promise<any> {\n context = transformDomainEventData(context);\n\n const json = JSON.stringify(context);\n\n const pipeline = client.pipeline();\n for (let i = 0; i < destinations.length; i++) {\n const { namespace } = destinations[i];\n const keyPrefix = (namespace ? `${namespace}:` : '');\n\n let key = keyPrefix + buildDomainEventChannelName(destinations[i].channel);\n pipeline.publish(key, json);\n\n if (\n context.event !== DomainEventName.CREATED &&\n typeof destinations[i].channel === 'function'\n ) {\n key = keyPrefix + buildDomainEventChannelName(destinations[i].channel, context.data.id);\n pipeline.publish(key, json);\n }\n }\n\n return pipeline.exec();\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 type { DomainsEventContext } from '@privateaim/core-kit';\nimport { DomainEventName, buildDomainEventFullName } from '@privateaim/core-kit';\nimport { Emitter } from '@socket.io/redis-emitter';\nimport type { Client } from 'redis-extension';\nimport type { DomainEventDestinations } from '../type';\nimport { buildDomainEventChannelName, transformDomainEventData } from '../utils';\n\nexport function publishDomainSocketEvent(\n client: Client,\n context: DomainsEventContext,\n destinations: DomainEventDestinations,\n) {\n context = transformDomainEventData(context);\n\n for (let i = 0; i < destinations.length; i++) {\n let emitter = new Emitter(client);\n if (destinations[i].namespace) {\n emitter = emitter.of(destinations[i].namespace);\n }\n\n let roomName = buildDomainEventChannelName(destinations[i].channel);\n\n const fullEventName = buildDomainEventFullName(context.type, context.event);\n\n emitter\n .in(roomName)\n .emit(fullEventName, {\n ...context,\n meta: {\n roomName,\n },\n });\n\n if (\n context.event !== DomainEventName.CREATED &&\n typeof destinations[i].channel === 'function'\n ) {\n roomName = buildDomainEventChannelName(destinations[i].channel, context.data.id);\n emitter\n .in(roomName)\n .emit(fullEventName, {\n ...context,\n meta: {\n roomName,\n roomId: context.data.id,\n },\n });\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 { DomainsEventContext } from '@privateaim/core-kit';\nimport type { Client } from 'redis-extension';\nimport { publishDomainRedisEvent } from './redis';\nimport { publishDomainSocketEvent } from './socket';\nimport type { DomainEventDestinations } from './type';\n\nexport async function publishDomainEvent(\n client: Client,\n context: DomainsEventContext,\n destinations: DomainEventDestinations,\n) {\n await publishDomainRedisEvent(client, context, destinations);\n publishDomainSocketEvent(client, context, destinations);\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"],"names":["_define_property","MemoryCache","set","id","value","options","cache","ttl","get","del","delete","has","constructor","TTLCache","instance","singa","name","factory","useMemoryCache","use","ComponentError","Error","input","message","cause","code","isComponentError","isObject","isQueuePayload","hasOwnProperty","data","metadata","QueueRouterRoutingType","buildQueueRouterPublishPayload","createNanoID","type","timestamp","Date","now","isQueueRouterPayload","setAmqpClientFactory","setFactory","isAmqpClientUsable","hasFactory","useAmqpClient","setVaultFactory","isVaultClientUsable","useVaultClient","guessAuthupTokenCreatorOptions","vault","password","AuthupClient","Client","tokenHook","baseURL","tokenCreator","mountClientResponseErrorTokenHook","useAuthupClient","isAuthupClientUsable","setAuthupClientFactory","createLogger","ctx","directory","loggerTransports","read","EnvironmentName","PRODUCTION","transports","Console","level","File","filename","path","join","process","cwd","maxsize","maxFiles","create","format","combine","errors","stack","colorize","simple","setLoggerFactory","isLoggerUsable","setLogger","useLogger","setRedisFactory","isRedisClientUsable","setRedisClient","useRedisClient","duplicate","useRedisPublishClient","useRedisSubscribeClient","QueueRouter","publish","exchange","routing","driver","of","ExchangeType","DIRECT","namespace","TOPIC","debug","key","messageId","persistent","WORK","consume","handlers","prefetchCount","undefined","requeueOnFailure","$any","payload","JSON","parse","content","toString","fields","redelivered","properties","handler","amqp","isQueueRouterUsable","useQueueRouter","transformDomainEventData","keys","Object","i","length","toISOString","buildDomainEventChannelName","publishDomainRedisEvent","client","context","destinations","json","stringify","pipeline","keyPrefix","channel","event","DomainEventName","CREATED","exec","publishDomainSocketEvent","emitter","Emitter","roomName","fullEventName","buildDomainEventFullName","in","emit","meta","roomId","publishDomainEvent","obj","prop","prototype","call"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/core/memory-cache/module.ts","../src/core/memory-cache/singleton.ts","../src/core/component/error.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/module.ts","../src/services/vault/singleton.ts","../src/services/authup/helpers.ts","../src/services/authup/module.ts","../src/services/authup/singleton.ts","../src/services/logger/module.ts","../src/services/logger/singleton.ts","../src/services/redis/singleton.ts","../src/services/redis/singleton-publish.ts","../src/services/redis/singleton-subscribe.ts","../src/core/queue-router/module.ts","../src/core/queue-router/singleton.ts","../src/domain-event/utils.ts","../src/domain-event/redis/publish.ts","../src/domain-event/socket/publish.ts","../src/domain-event/publish.ts","../src/utils/has-property.ts"],"sourcesContent":["/*\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 TTLCache from '@isaacs/ttlcache';\n\ntype BlockerOptions = {\n ttl: number;\n};\n\nexport class MemoryCache<\n KEY extends string = string,\n VALUE = any,\n> {\n protected options : BlockerOptions;\n\n protected cache : TTLCache<KEY, VALUE>;\n\n constructor(options: Partial<BlockerOptions> = {}) {\n this.options = {\n // 60 seconds\n ttl: 1000 * 60,\n ...options,\n };\n this.cache = new TTLCache<KEY, VALUE>();\n }\n\n set(id: KEY, value: VALUE, options: BlockerOptions) {\n this.cache.set(id, value, {\n ttl: options.ttl,\n });\n }\n\n get(id: KEY): VALUE | undefined {\n return this.cache.get(id);\n }\n\n del(id: KEY) : void {\n this.cache.delete(id);\n }\n\n has(id: KEY) : boolean {\n return this.cache.has(id);\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 { MemoryCache } from './module';\n\nconst instance = singa<MemoryCache>({\n name: 'queueRouter',\n factory: () => new MemoryCache(),\n});\n\nexport function useMemoryCache() {\n return instance.use();\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) 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 { ClientResponseErrorTokenHookOptions } from '@authup/core-http-kit';\nimport {\n Client, mountClientResponseErrorTokenHook as mountAuthupClientResponseErrorTokenHook,\n mountClientResponseErrorTokenHook,\n} from '@authup/core-http-kit';\nimport { guessAuthupTokenCreatorOptions } from './helpers';\nimport type { AuthupClientOptions } from './types';\n\nexport {\n mountAuthupClientResponseErrorTokenHook,\n};\n\nexport class AuthupClient extends Client {\n constructor(options: AuthupClientOptions = {}) {\n super(options);\n\n let tokenHook : ClientResponseErrorTokenHookOptions;\n if (options.tokenHook) {\n tokenHook = options.tokenHook;\n tokenHook.baseURL = tokenHook.baseURL || options.baseURL;\n } else {\n const tokenCreator = guessAuthupTokenCreatorOptions();\n tokenHook = {\n baseURL: options.baseURL,\n tokenCreator,\n };\n }\n\n mountClientResponseErrorTokenHook(this, tokenHook);\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 { read } from 'envix';\nimport path from 'node:path';\nimport { EnvironmentName } from 'typeorm-extension';\nimport type { Logger } from 'winston';\nimport { createLogger as create, format, transports } from 'winston';\nimport type { LoggerCreateContext, LoggerTransports } from './types';\n\nexport function createLogger(ctx: LoggerCreateContext = {}) : Logger {\n const { directory, options = {} } = ctx;\n\n let loggerTransports : LoggerTransports;\n if (read('env') === EnvironmentName.PRODUCTION) {\n loggerTransports = [\n new transports.Console({\n level: 'info',\n }),\n new transports.File({\n filename: path.join(directory || process.cwd(), 'access.log'),\n level: 'http',\n maxsize: 10 * 1024 * 1024, // 10MB\n maxFiles: 5,\n }),\n new transports.File({\n filename: path.join(directory || process.cwd(), 'error.log'),\n level: 'warn',\n maxsize: 10 * 1024 * 1024, // 10MB\n maxFiles: 5,\n }),\n ];\n } else {\n loggerTransports = [\n new transports.Console({\n level: 'debug',\n }),\n ];\n }\n\n return create({\n format: format.combine(\n format.errors({ stack: true }),\n format.timestamp(),\n format.colorize(),\n format.simple(),\n ),\n level: 'debug',\n transports: loggerTransports,\n // todo: deeply merge options\n ...(options || {}),\n });\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { type Factory, singa } from 'singa';\nimport type { Logger } from 'winston';\n\nconst instance = singa<Logger>({\n name: 'logger',\n});\n\nexport function setLoggerFactory(factory: Factory<Logger>) {\n instance.setFactory(factory);\n}\n\nexport function isLoggerUsable() {\n return instance.has() || instance.hasFactory();\n}\n\nexport function setLogger(input: Logger) {\n instance.set(input);\n}\n\nexport function useLogger() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024.\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.\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, 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(message: QueueRouterPayload) : Promise<boolean> {\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 (isLoggerUsable()) {\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 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 await handler(payload);\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) 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';\nimport type { DomainEventChannelName } from './type';\n\nexport function transformDomainEventData<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\nexport function buildDomainEventChannelName(\n input: DomainEventChannelName,\n id?: string | number,\n) : string {\n if (typeof input === 'string') {\n return input;\n }\n\n return input(id);\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 { DomainEventName } from '@privateaim/core-kit';\nimport type { DomainsEventContext } from '@privateaim/core-kit';\nimport type { Client } from 'redis-extension';\nimport type { DomainEventDestinations } from '../type';\nimport { buildDomainEventChannelName, transformDomainEventData } from '../utils';\n\nexport async function publishDomainRedisEvent(\n client: Client,\n context: DomainsEventContext,\n destinations: DomainEventDestinations,\n) : Promise<any> {\n context = transformDomainEventData(context);\n\n const json = JSON.stringify(context);\n\n const pipeline = client.pipeline();\n for (let i = 0; i < destinations.length; i++) {\n const { namespace } = destinations[i];\n const keyPrefix = (namespace ? `${namespace}:` : '');\n\n let key = keyPrefix + buildDomainEventChannelName(destinations[i].channel);\n pipeline.publish(key, json);\n\n if (\n context.event !== DomainEventName.CREATED &&\n typeof destinations[i].channel === 'function'\n ) {\n key = keyPrefix + buildDomainEventChannelName(destinations[i].channel, context.data.id);\n pipeline.publish(key, json);\n }\n }\n\n return pipeline.exec();\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 type { DomainsEventContext } from '@privateaim/core-kit';\nimport { DomainEventName, buildDomainEventFullName } from '@privateaim/core-kit';\nimport { Emitter } from '@socket.io/redis-emitter';\nimport type { Client } from 'redis-extension';\nimport type { DomainEventDestinations } from '../type';\nimport { buildDomainEventChannelName, transformDomainEventData } from '../utils';\n\nexport function publishDomainSocketEvent(\n client: Client,\n context: DomainsEventContext,\n destinations: DomainEventDestinations,\n) {\n context = transformDomainEventData(context);\n\n for (let i = 0; i < destinations.length; i++) {\n let emitter = new Emitter(client);\n if (destinations[i].namespace) {\n emitter = emitter.of(destinations[i].namespace);\n }\n\n let roomName = buildDomainEventChannelName(destinations[i].channel);\n\n const fullEventName = buildDomainEventFullName(context.type, context.event);\n\n emitter\n .in(roomName)\n .emit(fullEventName, {\n ...context,\n meta: {\n roomName,\n },\n });\n\n if (\n context.event !== DomainEventName.CREATED &&\n typeof destinations[i].channel === 'function'\n ) {\n roomName = buildDomainEventChannelName(destinations[i].channel, context.data.id);\n emitter\n .in(roomName)\n .emit(fullEventName, {\n ...context,\n meta: {\n roomName,\n roomId: context.data.id,\n },\n });\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 { DomainsEventContext } from '@privateaim/core-kit';\nimport type { Client } from 'redis-extension';\nimport { publishDomainRedisEvent } from './redis';\nimport { publishDomainSocketEvent } from './socket';\nimport type { DomainEventDestinations } from './type';\n\nexport async function publishDomainEvent(\n client: Client,\n context: DomainsEventContext,\n destinations: DomainEventDestinations,\n) {\n await publishDomainRedisEvent(client, context, destinations);\n publishDomainSocketEvent(client, context, destinations);\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"],"names":["_define_property","MemoryCache","set","id","value","options","cache","ttl","get","del","delete","has","constructor","TTLCache","instance","singa","name","factory","useMemoryCache","use","ComponentError","Error","input","message","cause","code","isComponentError","isObject","isQueuePayload","hasOwnProperty","data","metadata","QueueRouterRoutingType","buildQueueRouterPublishPayload","createNanoID","type","timestamp","Date","now","isQueueRouterPayload","setAmqpClientFactory","setFactory","isAmqpClientUsable","hasFactory","useAmqpClient","setVaultFactory","isVaultClientUsable","useVaultClient","guessAuthupTokenCreatorOptions","vault","password","AuthupClient","Client","tokenHook","baseURL","tokenCreator","mountClientResponseErrorTokenHook","useAuthupClient","isAuthupClientUsable","setAuthupClientFactory","createLogger","ctx","directory","loggerTransports","read","EnvironmentName","PRODUCTION","transports","Console","level","File","filename","path","join","process","cwd","maxsize","maxFiles","create","format","combine","errors","stack","colorize","simple","setLoggerFactory","isLoggerUsable","setLogger","useLogger","setRedisFactory","isRedisClientUsable","setRedisClient","useRedisClient","duplicate","useRedisPublishClient","useRedisSubscribeClient","QueueRouter","publish","exchange","routing","driver","of","ExchangeType","DIRECT","namespace","TOPIC","debug","key","messageId","persistent","WORK","consume","handlers","prefetchCount","undefined","requeueOnFailure","$any","payload","JSON","parse","content","toString","fields","redelivered","properties","handler","amqp","isQueueRouterUsable","useQueueRouter","transformDomainEventData","keys","Object","i","length","toISOString","buildDomainEventChannelName","publishDomainRedisEvent","client","context","destinations","json","stringify","pipeline","keyPrefix","channel","event","DomainEventName","CREATED","exec","publishDomainSocketEvent","emitter","Emitter","roomName","fullEventName","buildDomainEventFullName","in","emit","meta","roomId","publishDomainEvent","obj","prop","prototype","call"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -9,7 +9,7 @@ import { read } from 'envix';
|
|
|
9
9
|
import path from 'node:path';
|
|
10
10
|
import { EnvironmentName } from 'typeorm-extension';
|
|
11
11
|
import { transports, createLogger as createLogger$1, format } from 'winston';
|
|
12
|
-
export {
|
|
12
|
+
export { Client as RedisClient, ClientOptions as RedisClientOptions, buildKeyPath as buildRedisKeyPath, createClient as createRedisClient } from 'redis-extension';
|
|
13
13
|
import { DomainEventName, buildDomainEventFullName } from '@privateaim/core-kit';
|
|
14
14
|
import { Emitter } from '@socket.io/redis-emitter';
|
|
15
15
|
|
|
@@ -115,11 +115,11 @@ function isQueuePayload(input) {
|
|
|
115
115
|
* Author Peter Placzek (tada5hi)
|
|
116
116
|
* For the full copyright and license information,
|
|
117
117
|
* view the LICENSE file that was distributed with this source code.
|
|
118
|
-
*/ var QueueRouterRoutingType
|
|
119
|
-
(function(QueueRouterRoutingType) {
|
|
118
|
+
*/ var QueueRouterRoutingType = /*#__PURE__*/ function(QueueRouterRoutingType) {
|
|
120
119
|
QueueRouterRoutingType["WORK"] = "work";
|
|
121
120
|
QueueRouterRoutingType["PUB_SUB"] = "pubSub";
|
|
122
|
-
|
|
121
|
+
return QueueRouterRoutingType;
|
|
122
|
+
}({});
|
|
123
123
|
|
|
124
124
|
function buildQueueRouterPublishPayload(input) {
|
|
125
125
|
return {
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/core/memory-cache/module.ts","../src/core/memory-cache/singleton.ts","../src/core/component/error.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/module.ts","../src/services/vault/singleton.ts","../src/services/authup/helpers.ts","../src/services/authup/module.ts","../src/services/authup/singleton.ts","../src/services/logger/module.ts","../src/services/logger/singleton.ts","../src/services/redis/singleton.ts","../src/services/redis/singleton-publish.ts","../src/services/redis/singleton-subscribe.ts","../src/core/queue-router/module.ts","../src/core/queue-router/singleton.ts","../src/domain-event/utils.ts","../src/domain-event/redis/publish.ts","../src/domain-event/socket/publish.ts","../src/domain-event/publish.ts","../src/utils/has-property.ts"],"sourcesContent":["/*\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 TTLCache from '@isaacs/ttlcache';\n\ntype BlockerOptions = {\n ttl: number;\n};\n\nexport class MemoryCache<\n KEY extends string = string,\n VALUE = any,\n> {\n protected options : BlockerOptions;\n\n protected cache : TTLCache<KEY, VALUE>;\n\n constructor(options: Partial<BlockerOptions> = {}) {\n this.options = {\n // 60 seconds\n ttl: 1000 * 60,\n ...options,\n };\n this.cache = new TTLCache<KEY, VALUE>();\n }\n\n set(id: KEY, value: VALUE, options: BlockerOptions) {\n this.cache.set(id, value, {\n ttl: options.ttl,\n });\n }\n\n get(id: KEY): VALUE | undefined {\n return this.cache.get(id);\n }\n\n del(id: KEY) : void {\n this.cache.delete(id);\n }\n\n has(id: KEY) : boolean {\n return this.cache.has(id);\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 { MemoryCache } from './module';\n\nconst instance = singa<MemoryCache>({\n name: 'queueRouter',\n factory: () => new MemoryCache(),\n});\n\nexport function useMemoryCache() {\n return instance.use();\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) 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 { ClientResponseErrorTokenHookOptions } from '@authup/core-http-kit';\nimport {\n Client, mountClientResponseErrorTokenHook as mountAuthupClientResponseErrorTokenHook,\n mountClientResponseErrorTokenHook,\n} from '@authup/core-http-kit';\nimport { guessAuthupTokenCreatorOptions } from './helpers';\nimport type { AuthupClientOptions } from './types';\n\nexport {\n mountAuthupClientResponseErrorTokenHook,\n};\n\nexport class AuthupClient extends Client {\n constructor(options: AuthupClientOptions = {}) {\n super(options);\n\n let tokenHook : ClientResponseErrorTokenHookOptions;\n if (options.tokenHook) {\n tokenHook = options.tokenHook;\n tokenHook.baseURL = tokenHook.baseURL || options.baseURL;\n } else {\n const tokenCreator = guessAuthupTokenCreatorOptions();\n tokenHook = {\n baseURL: options.baseURL,\n tokenCreator,\n };\n }\n\n mountClientResponseErrorTokenHook(this, tokenHook);\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 { read } from 'envix';\nimport path from 'node:path';\nimport { EnvironmentName } from 'typeorm-extension';\nimport type { Logger } from 'winston';\nimport { createLogger as create, format, transports } from 'winston';\nimport type { LoggerCreateContext, LoggerTransports } from './types';\n\nexport function createLogger(ctx: LoggerCreateContext = {}) : Logger {\n const { directory, options = {} } = ctx;\n\n let loggerTransports : LoggerTransports;\n if (read('env') === EnvironmentName.PRODUCTION) {\n loggerTransports = [\n new transports.Console({\n level: 'info',\n }),\n new transports.File({\n filename: path.join(directory || process.cwd(), 'access.log'),\n level: 'http',\n maxsize: 10 * 1024 * 1024, // 10MB\n maxFiles: 5,\n }),\n new transports.File({\n filename: path.join(directory || process.cwd(), 'error.log'),\n level: 'warn',\n maxsize: 10 * 1024 * 1024, // 10MB\n maxFiles: 5,\n }),\n ];\n } else {\n loggerTransports = [\n new transports.Console({\n level: 'debug',\n }),\n ];\n }\n\n return create({\n format: format.combine(\n format.errors({ stack: true }),\n format.timestamp(),\n format.colorize(),\n format.simple(),\n ),\n level: 'debug',\n transports: loggerTransports,\n // todo: deeply merge options\n ...(options || {}),\n });\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { type Factory, singa } from 'singa';\nimport type { Logger } from 'winston';\n\nconst instance = singa<Logger>({\n name: 'logger',\n});\n\nexport function setLoggerFactory(factory: Factory<Logger>) {\n instance.setFactory(factory);\n}\n\nexport function isLoggerUsable() {\n return instance.has() || instance.hasFactory();\n}\n\nexport function setLogger(input: Logger) {\n instance.set(input);\n}\n\nexport function useLogger() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024.\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.\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, 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(message: QueueRouterPayload) : Promise<boolean> {\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 (isLoggerUsable()) {\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 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 await handler(payload);\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) 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';\nimport type { DomainEventChannelName } from './type';\n\nexport function transformDomainEventData<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\nexport function buildDomainEventChannelName(\n input: DomainEventChannelName,\n id?: string | number,\n) : string {\n if (typeof input === 'string') {\n return input;\n }\n\n return input(id);\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 { DomainEventName } from '@privateaim/core-kit';\nimport type { DomainsEventContext } from '@privateaim/core-kit';\nimport type { Client } from 'redis-extension';\nimport type { DomainEventDestinations } from '../type';\nimport { buildDomainEventChannelName, transformDomainEventData } from '../utils';\n\nexport async function publishDomainRedisEvent(\n client: Client,\n context: DomainsEventContext,\n destinations: DomainEventDestinations,\n) : Promise<any> {\n context = transformDomainEventData(context);\n\n const json = JSON.stringify(context);\n\n const pipeline = client.pipeline();\n for (let i = 0; i < destinations.length; i++) {\n const { namespace } = destinations[i];\n const keyPrefix = (namespace ? `${namespace}:` : '');\n\n let key = keyPrefix + buildDomainEventChannelName(destinations[i].channel);\n pipeline.publish(key, json);\n\n if (\n context.event !== DomainEventName.CREATED &&\n typeof destinations[i].channel === 'function'\n ) {\n key = keyPrefix + buildDomainEventChannelName(destinations[i].channel, context.data.id);\n pipeline.publish(key, json);\n }\n }\n\n return pipeline.exec();\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 type { DomainsEventContext } from '@privateaim/core-kit';\nimport { DomainEventName, buildDomainEventFullName } from '@privateaim/core-kit';\nimport { Emitter } from '@socket.io/redis-emitter';\nimport type { Client } from 'redis-extension';\nimport type { DomainEventDestinations } from '../type';\nimport { buildDomainEventChannelName, transformDomainEventData } from '../utils';\n\nexport function publishDomainSocketEvent(\n client: Client,\n context: DomainsEventContext,\n destinations: DomainEventDestinations,\n) {\n context = transformDomainEventData(context);\n\n for (let i = 0; i < destinations.length; i++) {\n let emitter = new Emitter(client);\n if (destinations[i].namespace) {\n emitter = emitter.of(destinations[i].namespace);\n }\n\n let roomName = buildDomainEventChannelName(destinations[i].channel);\n\n const fullEventName = buildDomainEventFullName(context.type, context.event);\n\n emitter\n .in(roomName)\n .emit(fullEventName, {\n ...context,\n meta: {\n roomName,\n },\n });\n\n if (\n context.event !== DomainEventName.CREATED &&\n typeof destinations[i].channel === 'function'\n ) {\n roomName = buildDomainEventChannelName(destinations[i].channel, context.data.id);\n emitter\n .in(roomName)\n .emit(fullEventName, {\n ...context,\n meta: {\n roomName,\n roomId: context.data.id,\n },\n });\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 { DomainsEventContext } from '@privateaim/core-kit';\nimport type { Client } from 'redis-extension';\nimport { publishDomainRedisEvent } from './redis';\nimport { publishDomainSocketEvent } from './socket';\nimport type { DomainEventDestinations } from './type';\n\nexport async function publishDomainEvent(\n client: Client,\n context: DomainsEventContext,\n destinations: DomainEventDestinations,\n) {\n await publishDomainRedisEvent(client, context, destinations);\n publishDomainSocketEvent(client, context, destinations);\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"],"names":["_define_property","MemoryCache","set","id","value","options","cache","ttl","get","del","delete","has","constructor","TTLCache","instance","singa","name","factory","useMemoryCache","use","ComponentError","Error","input","message","cause","code","isComponentError","isObject","isQueuePayload","hasOwnProperty","data","metadata","QueueRouterRoutingType","buildQueueRouterPublishPayload","createNanoID","type","timestamp","Date","now","isQueueRouterPayload","setAmqpClientFactory","setFactory","isAmqpClientUsable","hasFactory","useAmqpClient","setVaultFactory","isVaultClientUsable","useVaultClient","guessAuthupTokenCreatorOptions","vault","password","AuthupClient","Client","tokenHook","baseURL","tokenCreator","mountClientResponseErrorTokenHook","useAuthupClient","isAuthupClientUsable","setAuthupClientFactory","createLogger","ctx","directory","loggerTransports","read","EnvironmentName","PRODUCTION","transports","Console","level","File","filename","path","join","process","cwd","maxsize","maxFiles","create","format","combine","errors","stack","colorize","simple","setLoggerFactory","isLoggerUsable","setLogger","useLogger","setRedisFactory","isRedisClientUsable","setRedisClient","useRedisClient","duplicate","useRedisPublishClient","useRedisSubscribeClient","QueueRouter","publish","exchange","routing","driver","of","ExchangeType","DIRECT","namespace","TOPIC","debug","key","messageId","persistent","WORK","consume","handlers","prefetchCount","undefined","requeueOnFailure","$any","payload","JSON","parse","content","toString","fields","redelivered","properties","handler","amqp","isQueueRouterUsable","useQueueRouter","transformDomainEventData","keys","Object","i","length","toISOString","buildDomainEventChannelName","publishDomainRedisEvent","client","context","destinations","json","stringify","pipeline","keyPrefix","channel","event","DomainEventName","CREATED","exec","publishDomainSocketEvent","emitter","Emitter","roomName","fullEventName","buildDomainEventFullName","in","emit","meta","roomId","publishDomainEvent","obj","prop","prototype","call"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/core/memory-cache/module.ts","../src/core/memory-cache/singleton.ts","../src/core/component/error.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/module.ts","../src/services/vault/singleton.ts","../src/services/authup/helpers.ts","../src/services/authup/module.ts","../src/services/authup/singleton.ts","../src/services/logger/module.ts","../src/services/logger/singleton.ts","../src/services/redis/singleton.ts","../src/services/redis/singleton-publish.ts","../src/services/redis/singleton-subscribe.ts","../src/core/queue-router/module.ts","../src/core/queue-router/singleton.ts","../src/domain-event/utils.ts","../src/domain-event/redis/publish.ts","../src/domain-event/socket/publish.ts","../src/domain-event/publish.ts","../src/utils/has-property.ts"],"sourcesContent":["/*\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 TTLCache from '@isaacs/ttlcache';\n\ntype BlockerOptions = {\n ttl: number;\n};\n\nexport class MemoryCache<\n KEY extends string = string,\n VALUE = any,\n> {\n protected options : BlockerOptions;\n\n protected cache : TTLCache<KEY, VALUE>;\n\n constructor(options: Partial<BlockerOptions> = {}) {\n this.options = {\n // 60 seconds\n ttl: 1000 * 60,\n ...options,\n };\n this.cache = new TTLCache<KEY, VALUE>();\n }\n\n set(id: KEY, value: VALUE, options: BlockerOptions) {\n this.cache.set(id, value, {\n ttl: options.ttl,\n });\n }\n\n get(id: KEY): VALUE | undefined {\n return this.cache.get(id);\n }\n\n del(id: KEY) : void {\n this.cache.delete(id);\n }\n\n has(id: KEY) : boolean {\n return this.cache.has(id);\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 { MemoryCache } from './module';\n\nconst instance = singa<MemoryCache>({\n name: 'queueRouter',\n factory: () => new MemoryCache(),\n});\n\nexport function useMemoryCache() {\n return instance.use();\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) 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 { ClientResponseErrorTokenHookOptions } from '@authup/core-http-kit';\nimport {\n Client, mountClientResponseErrorTokenHook as mountAuthupClientResponseErrorTokenHook,\n mountClientResponseErrorTokenHook,\n} from '@authup/core-http-kit';\nimport { guessAuthupTokenCreatorOptions } from './helpers';\nimport type { AuthupClientOptions } from './types';\n\nexport {\n mountAuthupClientResponseErrorTokenHook,\n};\n\nexport class AuthupClient extends Client {\n constructor(options: AuthupClientOptions = {}) {\n super(options);\n\n let tokenHook : ClientResponseErrorTokenHookOptions;\n if (options.tokenHook) {\n tokenHook = options.tokenHook;\n tokenHook.baseURL = tokenHook.baseURL || options.baseURL;\n } else {\n const tokenCreator = guessAuthupTokenCreatorOptions();\n tokenHook = {\n baseURL: options.baseURL,\n tokenCreator,\n };\n }\n\n mountClientResponseErrorTokenHook(this, tokenHook);\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 { read } from 'envix';\nimport path from 'node:path';\nimport { EnvironmentName } from 'typeorm-extension';\nimport type { Logger } from 'winston';\nimport { createLogger as create, format, transports } from 'winston';\nimport type { LoggerCreateContext, LoggerTransports } from './types';\n\nexport function createLogger(ctx: LoggerCreateContext = {}) : Logger {\n const { directory, options = {} } = ctx;\n\n let loggerTransports : LoggerTransports;\n if (read('env') === EnvironmentName.PRODUCTION) {\n loggerTransports = [\n new transports.Console({\n level: 'info',\n }),\n new transports.File({\n filename: path.join(directory || process.cwd(), 'access.log'),\n level: 'http',\n maxsize: 10 * 1024 * 1024, // 10MB\n maxFiles: 5,\n }),\n new transports.File({\n filename: path.join(directory || process.cwd(), 'error.log'),\n level: 'warn',\n maxsize: 10 * 1024 * 1024, // 10MB\n maxFiles: 5,\n }),\n ];\n } else {\n loggerTransports = [\n new transports.Console({\n level: 'debug',\n }),\n ];\n }\n\n return create({\n format: format.combine(\n format.errors({ stack: true }),\n format.timestamp(),\n format.colorize(),\n format.simple(),\n ),\n level: 'debug',\n transports: loggerTransports,\n // todo: deeply merge options\n ...(options || {}),\n });\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { type Factory, singa } from 'singa';\nimport type { Logger } from 'winston';\n\nconst instance = singa<Logger>({\n name: 'logger',\n});\n\nexport function setLoggerFactory(factory: Factory<Logger>) {\n instance.setFactory(factory);\n}\n\nexport function isLoggerUsable() {\n return instance.has() || instance.hasFactory();\n}\n\nexport function setLogger(input: Logger) {\n instance.set(input);\n}\n\nexport function useLogger() {\n return instance.use();\n}\n","/*\n * Copyright (c) 2024.\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.\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, 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(message: QueueRouterPayload) : Promise<boolean> {\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 (isLoggerUsable()) {\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 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 await handler(payload);\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) 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';\nimport type { DomainEventChannelName } from './type';\n\nexport function transformDomainEventData<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\nexport function buildDomainEventChannelName(\n input: DomainEventChannelName,\n id?: string | number,\n) : string {\n if (typeof input === 'string') {\n return input;\n }\n\n return input(id);\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 { DomainEventName } from '@privateaim/core-kit';\nimport type { DomainsEventContext } from '@privateaim/core-kit';\nimport type { Client } from 'redis-extension';\nimport type { DomainEventDestinations } from '../type';\nimport { buildDomainEventChannelName, transformDomainEventData } from '../utils';\n\nexport async function publishDomainRedisEvent(\n client: Client,\n context: DomainsEventContext,\n destinations: DomainEventDestinations,\n) : Promise<any> {\n context = transformDomainEventData(context);\n\n const json = JSON.stringify(context);\n\n const pipeline = client.pipeline();\n for (let i = 0; i < destinations.length; i++) {\n const { namespace } = destinations[i];\n const keyPrefix = (namespace ? `${namespace}:` : '');\n\n let key = keyPrefix + buildDomainEventChannelName(destinations[i].channel);\n pipeline.publish(key, json);\n\n if (\n context.event !== DomainEventName.CREATED &&\n typeof destinations[i].channel === 'function'\n ) {\n key = keyPrefix + buildDomainEventChannelName(destinations[i].channel, context.data.id);\n pipeline.publish(key, json);\n }\n }\n\n return pipeline.exec();\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 type { DomainsEventContext } from '@privateaim/core-kit';\nimport { DomainEventName, buildDomainEventFullName } from '@privateaim/core-kit';\nimport { Emitter } from '@socket.io/redis-emitter';\nimport type { Client } from 'redis-extension';\nimport type { DomainEventDestinations } from '../type';\nimport { buildDomainEventChannelName, transformDomainEventData } from '../utils';\n\nexport function publishDomainSocketEvent(\n client: Client,\n context: DomainsEventContext,\n destinations: DomainEventDestinations,\n) {\n context = transformDomainEventData(context);\n\n for (let i = 0; i < destinations.length; i++) {\n let emitter = new Emitter(client);\n if (destinations[i].namespace) {\n emitter = emitter.of(destinations[i].namespace);\n }\n\n let roomName = buildDomainEventChannelName(destinations[i].channel);\n\n const fullEventName = buildDomainEventFullName(context.type, context.event);\n\n emitter\n .in(roomName)\n .emit(fullEventName, {\n ...context,\n meta: {\n roomName,\n },\n });\n\n if (\n context.event !== DomainEventName.CREATED &&\n typeof destinations[i].channel === 'function'\n ) {\n roomName = buildDomainEventChannelName(destinations[i].channel, context.data.id);\n emitter\n .in(roomName)\n .emit(fullEventName, {\n ...context,\n meta: {\n roomName,\n roomId: context.data.id,\n },\n });\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 { DomainsEventContext } from '@privateaim/core-kit';\nimport type { Client } from 'redis-extension';\nimport { publishDomainRedisEvent } from './redis';\nimport { publishDomainSocketEvent } from './socket';\nimport type { DomainEventDestinations } from './type';\n\nexport async function publishDomainEvent(\n client: Client,\n context: DomainsEventContext,\n destinations: DomainEventDestinations,\n) {\n await publishDomainRedisEvent(client, context, destinations);\n publishDomainSocketEvent(client, context, destinations);\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"],"names":["_define_property","MemoryCache","set","id","value","options","cache","ttl","get","del","delete","has","constructor","TTLCache","instance","singa","name","factory","useMemoryCache","use","ComponentError","Error","input","message","cause","code","isComponentError","isObject","isQueuePayload","hasOwnProperty","data","metadata","QueueRouterRoutingType","buildQueueRouterPublishPayload","createNanoID","type","timestamp","Date","now","isQueueRouterPayload","setAmqpClientFactory","setFactory","isAmqpClientUsable","hasFactory","useAmqpClient","setVaultFactory","isVaultClientUsable","useVaultClient","guessAuthupTokenCreatorOptions","vault","password","AuthupClient","Client","tokenHook","baseURL","tokenCreator","mountClientResponseErrorTokenHook","useAuthupClient","isAuthupClientUsable","setAuthupClientFactory","createLogger","ctx","directory","loggerTransports","read","EnvironmentName","PRODUCTION","transports","Console","level","File","filename","path","join","process","cwd","maxsize","maxFiles","create","format","combine","errors","stack","colorize","simple","setLoggerFactory","isLoggerUsable","setLogger","useLogger","setRedisFactory","isRedisClientUsable","setRedisClient","useRedisClient","duplicate","useRedisPublishClient","useRedisSubscribeClient","QueueRouter","publish","exchange","routing","driver","of","ExchangeType","DIRECT","namespace","TOPIC","debug","key","messageId","persistent","WORK","consume","handlers","prefetchCount","undefined","requeueOnFailure","$any","payload","JSON","parse","content","toString","fields","redelivered","properties","handler","amqp","isQueueRouterUsable","useQueueRouter","transformDomainEventData","keys","Object","i","length","toISOString","buildDomainEventChannelName","publishDomainRedisEvent","client","context","destinations","json","stringify","pipeline","keyPrefix","channel","event","DomainEventName","CREATED","exec","publishDomainSocketEvent","emitter","Emitter","roomName","fullEventName","buildDomainEventFullName","in","emit","meta","roomId","publishDomainEvent","obj","prop","prototype","call"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { createRedisClient, RedisClient, RedisClientOptions,
|
|
1
|
+
import { Client as RedisClient, ClientOptions as RedisClientOptions, createClient as createRedisClient } from 'redis-extension';
|
|
2
|
+
export { createRedisClient, RedisClient, RedisClientOptions, };
|
|
3
3
|
//# 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,EACH,
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/services/redis/module.ts"],"names":[],"mappings":"AAOA,OAAO,EACH,MAAM,IAAI,WAAW,EACrB,aAAa,IAAI,kBAAkB,EACnC,YAAY,IAAI,iBAAiB,EACpC,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACH,iBAAiB,EACjB,WAAW,EACX,kBAAkB,GACrB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@privateaim/server-kit",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.4",
|
|
4
4
|
"exports": {
|
|
5
5
|
"./package.json": "./package.json",
|
|
6
6
|
".": {
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@ebec/http": "^2.3.0",
|
|
31
31
|
"@isaacs/ttlcache": "^1.4.1",
|
|
32
|
-
"@privateaim/core-kit": "^0.8.
|
|
33
|
-
"@privateaim/kit": "^0.8.
|
|
32
|
+
"@privateaim/core-kit": "^0.8.4",
|
|
33
|
+
"@privateaim/kit": "^0.8.4",
|
|
34
34
|
"@socket.io/redis-emitter": "^5.1.0",
|
|
35
35
|
"envix": "^1.5.0",
|
|
36
36
|
"hapic": "^2.5.1",
|
|
@@ -38,18 +38,18 @@
|
|
|
38
38
|
"winston": "^3.14.1"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@authup/core-http-kit": "^1.0.0-beta.
|
|
41
|
+
"@authup/core-http-kit": "^1.0.0-beta.22",
|
|
42
42
|
"@hapic/vault": "^2.3.4",
|
|
43
43
|
"amqp-extension": "^4.0.0-beta.3",
|
|
44
|
-
"redis-extension": "^
|
|
45
|
-
"typeorm-extension": "^3.6.
|
|
44
|
+
"redis-extension": "^2.0.0",
|
|
45
|
+
"typeorm-extension": "^3.6.2"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
|
-
"@authup/core-http-kit": "^1.0.0-beta.
|
|
48
|
+
"@authup/core-http-kit": "^1.0.0-beta.22",
|
|
49
49
|
"@hapic/vault": "^2.3.4",
|
|
50
50
|
"amqp-extension": "^4.0.0-beta.3",
|
|
51
|
-
"redis-extension": "^
|
|
52
|
-
"typeorm-extension": "^3.6.
|
|
51
|
+
"redis-extension": "^2.0.0",
|
|
52
|
+
"typeorm-extension": "^3.6.2"
|
|
53
53
|
},
|
|
54
54
|
"publishConfig": {
|
|
55
55
|
"access": "public"
|
|
@@ -6,10 +6,8 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
|
-
Cache as RedisCache,
|
|
10
9
|
Client as RedisClient,
|
|
11
10
|
ClientOptions as RedisClientOptions,
|
|
12
|
-
KeyPathID as RedisKeyPathID,
|
|
13
11
|
createClient as createRedisClient,
|
|
14
12
|
} from 'redis-extension';
|
|
15
13
|
|
|
@@ -17,6 +15,4 @@ export {
|
|
|
17
15
|
createRedisClient,
|
|
18
16
|
RedisClient,
|
|
19
17
|
RedisClientOptions,
|
|
20
|
-
RedisKeyPathID,
|
|
21
|
-
RedisCache,
|
|
22
18
|
};
|