@common-stack/server-stack 7.1.1-alpha.9 → 7.2.1-alpha.2
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/lib/MainStackServer.cjs +101 -142
- package/lib/MainStackServer.cjs.map +1 -1
- package/lib/MainStackServer.d.ts +10 -5
- package/lib/MainStackServer.mjs +101 -142
- package/lib/MainStackServer.mjs.map +1 -1
- package/lib/StackServer.cjs +23 -66
- package/lib/StackServer.cjs.map +1 -1
- package/lib/StackServer.d.ts +4 -5
- package/lib/StackServer.mjs +23 -66
- package/lib/StackServer.mjs.map +1 -1
- package/lib/api/schema-builder.cjs +13 -12
- package/lib/api/schema-builder.cjs.map +1 -1
- package/lib/api/schema-builder.mjs +13 -12
- package/lib/api/schema-builder.mjs.map +1 -1
- package/lib/api/sub-graph-schema-builder.cjs +13 -15
- package/lib/api/sub-graph-schema-builder.cjs.map +1 -1
- package/lib/api/sub-graph-schema-builder.mjs +14 -16
- package/lib/api/sub-graph-schema-builder.mjs.map +1 -1
- package/lib/config/env-config.cjs +6 -0
- package/lib/config/env-config.cjs.map +1 -1
- package/lib/config/env-config.d.ts +6 -0
- package/lib/config/env-config.mjs +6 -0
- package/lib/config/env-config.mjs.map +1 -1
- package/lib/examples/tenant-feature-example.d.ts +13 -0
- package/lib/examples/tenant-feature-integration.d.ts +14 -0
- package/lib/features/multi-module-example.d.ts +17 -0
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.mjs +1 -1
- package/lib/infrastructure/container-module.cjs +27 -0
- package/lib/infrastructure/container-module.cjs.map +1 -0
- package/lib/infrastructure/container-module.d.ts +3 -0
- package/lib/infrastructure/container-module.mjs +27 -0
- package/lib/infrastructure/container-module.mjs.map +1 -0
- package/lib/infrastructure/example-workflows.d.ts +16 -0
- package/lib/infrastructure/index.d.ts +5 -0
- package/lib/infrastructure/infrastructure-factory.cjs +127 -0
- package/lib/infrastructure/infrastructure-factory.cjs.map +1 -0
- package/lib/infrastructure/infrastructure-factory.d.ts +33 -0
- package/lib/infrastructure/infrastructure-factory.mjs +127 -0
- package/lib/infrastructure/infrastructure-factory.mjs.map +1 -0
- package/lib/infrastructure/inngest-factory.cjs +26 -0
- package/lib/infrastructure/inngest-factory.cjs.map +1 -0
- package/lib/infrastructure/inngest-factory.d.ts +8 -0
- package/lib/infrastructure/inngest-factory.mjs +26 -0
- package/lib/infrastructure/inngest-factory.mjs.map +1 -0
- package/lib/infrastructure/types.d.ts +28 -0
- package/lib/infrastructure/usage-examples.d.ts +9 -0
- package/lib/infrastructure/workflow-orchestrator.cjs +59 -0
- package/lib/infrastructure/workflow-orchestrator.cjs.map +1 -0
- package/lib/infrastructure/workflow-orchestrator.d.ts +10 -0
- package/lib/infrastructure/workflow-orchestrator.mjs +59 -0
- package/lib/infrastructure/workflow-orchestrator.mjs.map +1 -0
- package/lib/inngest/client-id-generator.d.ts +29 -0
- package/lib/inngest/handler-factory.d.ts +18 -0
- package/lib/inngest/multi-module-functions.d.ts +133 -0
- package/lib/inngest/setup.cjs +38 -0
- package/lib/inngest/setup.cjs.map +1 -0
- package/lib/inngest/setup.d.ts +10 -0
- package/lib/inngest/setup.mjs +38 -0
- package/lib/inngest/setup.mjs.map +1 -0
- package/lib/interfaces/graphql-request-context.d.ts +5 -0
- package/lib/middleware/index.d.ts +5 -0
- package/lib/middleware/redis-client.cjs +18 -0
- package/lib/middleware/redis-client.cjs.map +1 -0
- package/lib/middleware/redis-client.d.ts +16 -0
- package/lib/middleware/redis-client.mjs +18 -0
- package/lib/middleware/redis-client.mjs.map +1 -0
- package/lib/plugins/responseCachePlugin.cjs +1 -2
- package/lib/plugins/responseCachePlugin.cjs.map +1 -1
- package/lib/plugins/responseCachePlugin.mjs +1 -2
- package/lib/plugins/responseCachePlugin.mjs.map +1 -1
- package/lib/servers/ExpressApp.cjs +7 -2
- package/lib/servers/ExpressApp.cjs.map +1 -1
- package/lib/servers/ExpressApp.d.ts +1 -1
- package/lib/servers/ExpressApp.mjs +7 -2
- package/lib/servers/ExpressApp.mjs.map +1 -1
- package/lib/servers/GraphqlServer.cjs +7 -2
- package/lib/servers/GraphqlServer.cjs.map +1 -1
- package/lib/servers/GraphqlServer.d.ts +8 -6
- package/lib/servers/GraphqlServer.mjs +7 -2
- package/lib/servers/GraphqlServer.mjs.map +1 -1
- package/lib/servers/mongodb-migration-update.d.ts +1 -1
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/safe-model-factory.d.ts +18 -0
- package/package.json +10 -9
- package/lib/api/resolver.cjs +0 -12
- package/lib/api/resolver.cjs.map +0 -1
- package/lib/api/resolver.mjs +0 -12
- package/lib/api/resolver.mjs.map +0 -1
- package/lib/api/root-schema.graphqls.cjs +0 -2
- package/lib/api/root-schema.graphqls.cjs.map +0 -1
- package/lib/api/root-schema.graphqls.mjs +0 -2
- package/lib/api/root-schema.graphqls.mjs.map +0 -1
- package/lib/api/scalar.cjs +0 -16
- package/lib/api/scalar.cjs.map +0 -1
- package/lib/api/scalar.mjs +0 -16
- package/lib/api/scalar.mjs.map +0 -1
- package/lib/graphql/directives/index.cjs +0 -10
- package/lib/graphql/directives/index.cjs.map +0 -1
- package/lib/graphql/directives/index.d.ts +0 -7
- package/lib/graphql/directives/index.mjs +0 -10
- package/lib/graphql/directives/index.mjs.map +0 -1
- package/lib/graphql/index.d.ts +0 -2
- package/lib/graphql/schema/directives.graphql.cjs +0 -1
- package/lib/graphql/schema/directives.graphql.cjs.map +0 -1
- package/lib/graphql/schema/directives.graphql.mjs +0 -1
- package/lib/graphql/schema/directives.graphql.mjs.map +0 -1
- package/lib/graphql/schema/index.cjs +0 -1
- package/lib/graphql/schema/index.cjs.map +0 -1
- package/lib/graphql/schema/index.d.ts +0 -1
- package/lib/graphql/schema/index.mjs +0 -1
- package/lib/graphql/schema/index.mjs.map +0 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {ContainerModule}from'inversify';import {CommonType,ClientTypes}from'@common-stack/core';const createInfrastructureModule = (context, connectorConfig) => {
|
|
2
|
+
return new ContainerModule((bind) => {
|
|
3
|
+
// Core bindings - always included
|
|
4
|
+
// Bind logger with multiple identifiers for compatibility, avoiding duplicates
|
|
5
|
+
bind('Logger').toConstantValue(context.logger);
|
|
6
|
+
bind(CommonType.LOGGER).toConstantValue(context.logger); // 'LOGGER'
|
|
7
|
+
bind(ClientTypes.Logger).toConstantValue(context.logger); // Symbol.for('Logger')
|
|
8
|
+
bind('Environment').toConstantValue(process.env.NODE_ENV || 'development');
|
|
9
|
+
bind(CommonType.ENVIRONMENT).toConstantValue(process.env.NODE_ENV || 'development');
|
|
10
|
+
bind(CommonType.MOLECULER_BROKER).toConstantValue(context.broker);
|
|
11
|
+
bind('MoleculerBroker').toConstantValue(context.broker);
|
|
12
|
+
// Conditional bindings based on connector configuration
|
|
13
|
+
if (connectorConfig.pubsub && context.pubsub) {
|
|
14
|
+
bind('PubSub').toConstantValue(context.pubsub);
|
|
15
|
+
bind(CommonType.PUBSUB).toConstantValue(context.pubsub);
|
|
16
|
+
}
|
|
17
|
+
if (connectorConfig.mongo && context.mongoClient) {
|
|
18
|
+
bind('MongoDBConnection').toConstantValue(context.mongoClient);
|
|
19
|
+
}
|
|
20
|
+
if (connectorConfig.redis && context.redisClient) {
|
|
21
|
+
bind(CommonType.REDIS_CLIENT).toConstantValue(context.redisClient);
|
|
22
|
+
}
|
|
23
|
+
if (connectorConfig.inngest && context.inngestClient) {
|
|
24
|
+
bind(CommonType.INNGEST_CLIENT).toConstantValue(context.inngestClient);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
};export{createInfrastructureModule};//# sourceMappingURL=container-module.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container-module.mjs","sources":["../../src/infrastructure/container-module.ts"],"sourcesContent":[null],"names":[],"mappings":"sGAIa,0BAA0B,GAAG,CAAC,OAA8B,EAAE,eAAgC,KAAI;AAC3G,IAAA,OAAO,IAAI,eAAe,CAAC,CAAC,IAAqB,KAAI;;;QAGjD,IAAI,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAEzD,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC,CAAC;AAC3E,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClE,IAAI,CAAC,iBAAiB,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;;QAGxD,IAAI,eAAe,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;YAC1C,IAAI,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SAC3D;QAED,IAAI,eAAe,CAAC,KAAK,IAAI,OAAO,CAAC,WAAW,EAAE;YAC9C,IAAI,CAAC,mBAAmB,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;SAClE;QAED,IAAI,eAAe,CAAC,KAAK,IAAI,OAAO,CAAC,WAAW,EAAE;AAC9C,YAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;SACtE;QAED,IAAI,eAAe,CAAC,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE;AAClD,YAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SAC1E;AACL,KAAC,CAAC,CAAC;AACP"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { WorkflowStep, ConnectorConfig } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Example custom workflow steps that can be added to the infrastructure initialization
|
|
4
|
+
*/
|
|
5
|
+
export declare const metricsInitializationStep: WorkflowStep;
|
|
6
|
+
export declare const customMigrationStep: WorkflowStep;
|
|
7
|
+
export declare const healthCheckStep: WorkflowStep;
|
|
8
|
+
export declare const cacheWarmingStep: WorkflowStep;
|
|
9
|
+
export declare const HIGH_PERFORMANCE_CONFIG: ConnectorConfig;
|
|
10
|
+
export declare const MINIMAL_CONFIG: ConnectorConfig;
|
|
11
|
+
export declare function createCustomWorkflow(environment: string): WorkflowStep[];
|
|
12
|
+
export declare function createCustomInfrastructureConfig(environment: string): {
|
|
13
|
+
connectors: ConnectorConfig;
|
|
14
|
+
workflows: WorkflowStep[];
|
|
15
|
+
environment: string;
|
|
16
|
+
};
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
'use strict';var moleculer=require('moleculer'),serverCore=require('@common-stack/server-core'),workflowOrchestrator=require('./workflow-orchestrator.cjs'),containerModule=require('./container-module.cjs'),inngestFactory=require('./inngest-factory.cjs'),connectionBroker=require('../connectors/connection-broker.cjs'),moleculer_config=require('../config/moleculer.config.cjs'),moleculerInterNamespace=require('../middleware/moleculer-inter-namespace.cjs');class InfrastructureFactory {
|
|
2
|
+
logger;
|
|
3
|
+
connectionBroker;
|
|
4
|
+
orchestrator;
|
|
5
|
+
constructor(logger) {
|
|
6
|
+
this.logger = logger;
|
|
7
|
+
}
|
|
8
|
+
async initialize() {
|
|
9
|
+
this.logger.info('Initializing Infrastructure Factory');
|
|
10
|
+
this.connectionBroker = new connectionBroker.ConnectionBroker(moleculer_config.default.transporter, this.logger);
|
|
11
|
+
}
|
|
12
|
+
async createBrokerAndContainer(options, serverFeature, settings, existingAllModules) {
|
|
13
|
+
const { type, nodeId, connectorConfig, enableMetrics = true, workflows = [] } = options;
|
|
14
|
+
// Create infrastructure context
|
|
15
|
+
const context = await this.createInfrastructureContext(connectorConfig);
|
|
16
|
+
// Create workflow orchestrator
|
|
17
|
+
const config = {
|
|
18
|
+
connectors: connectorConfig,
|
|
19
|
+
workflows,
|
|
20
|
+
environment: process.env.NODE_ENV || 'development',
|
|
21
|
+
};
|
|
22
|
+
this.orchestrator = new workflowOrchestrator.WorkflowOrchestrator(config);
|
|
23
|
+
// Create service broker
|
|
24
|
+
const broker = this.createServiceBroker(type, nodeId, enableMetrics);
|
|
25
|
+
context.broker = broker;
|
|
26
|
+
// Create container with infrastructure module
|
|
27
|
+
const infraModule = containerModule.createInfrastructureModule(context, connectorConfig);
|
|
28
|
+
const feature = new serverCore.Feature({
|
|
29
|
+
createContainerFunc: [(settings) => infraModule],
|
|
30
|
+
createHemeraContainerFunc: [(settings) => infraModule],
|
|
31
|
+
});
|
|
32
|
+
// Reuse existing allModules if provided (for microservice in development), otherwise create new one
|
|
33
|
+
const allModules = existingAllModules || new serverCore.Feature(feature, serverFeature);
|
|
34
|
+
let container;
|
|
35
|
+
if (type === 'main') {
|
|
36
|
+
container = await allModules.createContainers({ ...settings, mongoConnection: context.mongoClient });
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
container = await allModules.createHemeraContainers({ ...settings, mongoConnection: context.mongoClient });
|
|
40
|
+
}
|
|
41
|
+
// Load moleculer services
|
|
42
|
+
if (type === 'main') {
|
|
43
|
+
allModules.loadMainMoleculerService({
|
|
44
|
+
broker,
|
|
45
|
+
container,
|
|
46
|
+
settings,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
allModules.loadClientMoleculerService({
|
|
51
|
+
broker,
|
|
52
|
+
container,
|
|
53
|
+
settings,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return { broker, container, context, allModules };
|
|
57
|
+
}
|
|
58
|
+
async createInfrastructureContext(connectorConfig) {
|
|
59
|
+
const context = {
|
|
60
|
+
logger: this.logger,
|
|
61
|
+
};
|
|
62
|
+
if (connectorConfig.redis) {
|
|
63
|
+
context.redisClient = await this.connectionBroker.redisConnection;
|
|
64
|
+
}
|
|
65
|
+
if (connectorConfig.mongo) {
|
|
66
|
+
context.mongoClient = await this.connectionBroker.mongoConnection;
|
|
67
|
+
}
|
|
68
|
+
if (connectorConfig.pubsub) {
|
|
69
|
+
context.pubsub = await this.connectionBroker.graphqlPubsub;
|
|
70
|
+
}
|
|
71
|
+
if (connectorConfig.inngest) {
|
|
72
|
+
context.inngestClient = inngestFactory.createInngestClient(this.logger);
|
|
73
|
+
}
|
|
74
|
+
return context;
|
|
75
|
+
}
|
|
76
|
+
createServiceBroker(type, nodeId, enableMetrics = true) {
|
|
77
|
+
const config = {
|
|
78
|
+
...moleculer_config.default,
|
|
79
|
+
metrics: { enabled: enableMetrics },
|
|
80
|
+
...(nodeId && { nodeID: nodeId }),
|
|
81
|
+
};
|
|
82
|
+
if (type === 'main') {
|
|
83
|
+
config.middlewares = [
|
|
84
|
+
moleculerInterNamespace.InterNamespaceMiddleware([
|
|
85
|
+
{
|
|
86
|
+
namespace: 'api-admin',
|
|
87
|
+
transporter: moleculer_config.default.transporter,
|
|
88
|
+
metrics: { enabled: false },
|
|
89
|
+
},
|
|
90
|
+
]),
|
|
91
|
+
];
|
|
92
|
+
}
|
|
93
|
+
return new moleculer.ServiceBroker(config);
|
|
94
|
+
}
|
|
95
|
+
getConnectionBroker() {
|
|
96
|
+
return this.connectionBroker;
|
|
97
|
+
}
|
|
98
|
+
async cleanup() {
|
|
99
|
+
if (this.connectionBroker) {
|
|
100
|
+
await this.connectionBroker.stop();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Factory methods for common configurations
|
|
104
|
+
static createMainServiceConfig() {
|
|
105
|
+
return {
|
|
106
|
+
type: 'main',
|
|
107
|
+
connectorConfig: workflowOrchestrator.CONNECTOR_CONFIGS.FULL,
|
|
108
|
+
enableMetrics: true,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
static createMicroserviceConfig(nodeId) {
|
|
112
|
+
return {
|
|
113
|
+
type: 'microservice',
|
|
114
|
+
nodeId: nodeId || `microservice-node-${Date.now()}`,
|
|
115
|
+
connectorConfig: workflowOrchestrator.CONNECTOR_CONFIGS.MICROSERVICE,
|
|
116
|
+
enableMetrics: false,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
static createDevelopmentMicroserviceConfig() {
|
|
120
|
+
return {
|
|
121
|
+
type: 'microservice',
|
|
122
|
+
nodeId: 'node-broker-2',
|
|
123
|
+
connectorConfig: workflowOrchestrator.CONNECTOR_CONFIGS.DEVELOPMENT,
|
|
124
|
+
enableMetrics: false,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
}exports.InfrastructureFactory=InfrastructureFactory;//# sourceMappingURL=infrastructure-factory.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infrastructure-factory.cjs","sources":["../../src/infrastructure/infrastructure-factory.ts"],"sourcesContent":[null],"names":["ConnectionBroker","brokerConfig","WorkflowOrchestrator","createInfrastructureModule","ServerFeature","createInngestClient","InterNamespaceMiddleware","ServiceBroker","CONNECTOR_CONFIGS"],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ServiceBroker } from 'moleculer';
|
|
2
|
+
import { Container } from 'inversify';
|
|
3
|
+
import { Feature as ServerFeature } from '@common-stack/server-core';
|
|
4
|
+
import { CdmLogger } from '@cdm-logger/core';
|
|
5
|
+
import { InfrastructureContext, ConnectorConfig, WorkflowStep } from './types';
|
|
6
|
+
import { ConnectionBroker } from '../connectors/connection-broker';
|
|
7
|
+
export interface BrokerInitializationOptions {
|
|
8
|
+
type: 'main' | 'microservice';
|
|
9
|
+
nodeId?: string;
|
|
10
|
+
connectorConfig: ConnectorConfig;
|
|
11
|
+
enableMetrics?: boolean;
|
|
12
|
+
workflows?: WorkflowStep[];
|
|
13
|
+
}
|
|
14
|
+
export declare class InfrastructureFactory {
|
|
15
|
+
private logger;
|
|
16
|
+
private connectionBroker;
|
|
17
|
+
private orchestrator;
|
|
18
|
+
constructor(logger: CdmLogger.ILogger);
|
|
19
|
+
initialize(): Promise<void>;
|
|
20
|
+
createBrokerAndContainer(options: BrokerInitializationOptions, serverFeature: ServerFeature, settings: any, existingAllModules?: ServerFeature): Promise<{
|
|
21
|
+
broker: ServiceBroker;
|
|
22
|
+
container: Container;
|
|
23
|
+
context: InfrastructureContext;
|
|
24
|
+
allModules: ServerFeature;
|
|
25
|
+
}>;
|
|
26
|
+
private createInfrastructureContext;
|
|
27
|
+
private createServiceBroker;
|
|
28
|
+
getConnectionBroker(): ConnectionBroker;
|
|
29
|
+
cleanup(): Promise<void>;
|
|
30
|
+
static createMainServiceConfig(): BrokerInitializationOptions;
|
|
31
|
+
static createMicroserviceConfig(nodeId?: string): BrokerInitializationOptions;
|
|
32
|
+
static createDevelopmentMicroserviceConfig(): BrokerInitializationOptions;
|
|
33
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import {ServiceBroker}from'moleculer';import {Feature}from'@common-stack/server-core';import {WorkflowOrchestrator,CONNECTOR_CONFIGS}from'./workflow-orchestrator.mjs';import {createInfrastructureModule}from'./container-module.mjs';import {createInngestClient}from'./inngest-factory.mjs';import {ConnectionBroker}from'../connectors/connection-broker.mjs';import brokerConfig from'../config/moleculer.config.mjs';import {InterNamespaceMiddleware}from'../middleware/moleculer-inter-namespace.mjs';class InfrastructureFactory {
|
|
2
|
+
logger;
|
|
3
|
+
connectionBroker;
|
|
4
|
+
orchestrator;
|
|
5
|
+
constructor(logger) {
|
|
6
|
+
this.logger = logger;
|
|
7
|
+
}
|
|
8
|
+
async initialize() {
|
|
9
|
+
this.logger.info('Initializing Infrastructure Factory');
|
|
10
|
+
this.connectionBroker = new ConnectionBroker(brokerConfig.transporter, this.logger);
|
|
11
|
+
}
|
|
12
|
+
async createBrokerAndContainer(options, serverFeature, settings, existingAllModules) {
|
|
13
|
+
const { type, nodeId, connectorConfig, enableMetrics = true, workflows = [] } = options;
|
|
14
|
+
// Create infrastructure context
|
|
15
|
+
const context = await this.createInfrastructureContext(connectorConfig);
|
|
16
|
+
// Create workflow orchestrator
|
|
17
|
+
const config = {
|
|
18
|
+
connectors: connectorConfig,
|
|
19
|
+
workflows,
|
|
20
|
+
environment: process.env.NODE_ENV || 'development',
|
|
21
|
+
};
|
|
22
|
+
this.orchestrator = new WorkflowOrchestrator(config);
|
|
23
|
+
// Create service broker
|
|
24
|
+
const broker = this.createServiceBroker(type, nodeId, enableMetrics);
|
|
25
|
+
context.broker = broker;
|
|
26
|
+
// Create container with infrastructure module
|
|
27
|
+
const infraModule = createInfrastructureModule(context, connectorConfig);
|
|
28
|
+
const feature = new Feature({
|
|
29
|
+
createContainerFunc: [(settings) => infraModule],
|
|
30
|
+
createHemeraContainerFunc: [(settings) => infraModule],
|
|
31
|
+
});
|
|
32
|
+
// Reuse existing allModules if provided (for microservice in development), otherwise create new one
|
|
33
|
+
const allModules = existingAllModules || new Feature(feature, serverFeature);
|
|
34
|
+
let container;
|
|
35
|
+
if (type === 'main') {
|
|
36
|
+
container = await allModules.createContainers({ ...settings, mongoConnection: context.mongoClient });
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
container = await allModules.createHemeraContainers({ ...settings, mongoConnection: context.mongoClient });
|
|
40
|
+
}
|
|
41
|
+
// Load moleculer services
|
|
42
|
+
if (type === 'main') {
|
|
43
|
+
allModules.loadMainMoleculerService({
|
|
44
|
+
broker,
|
|
45
|
+
container,
|
|
46
|
+
settings,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
allModules.loadClientMoleculerService({
|
|
51
|
+
broker,
|
|
52
|
+
container,
|
|
53
|
+
settings,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return { broker, container, context, allModules };
|
|
57
|
+
}
|
|
58
|
+
async createInfrastructureContext(connectorConfig) {
|
|
59
|
+
const context = {
|
|
60
|
+
logger: this.logger,
|
|
61
|
+
};
|
|
62
|
+
if (connectorConfig.redis) {
|
|
63
|
+
context.redisClient = await this.connectionBroker.redisConnection;
|
|
64
|
+
}
|
|
65
|
+
if (connectorConfig.mongo) {
|
|
66
|
+
context.mongoClient = await this.connectionBroker.mongoConnection;
|
|
67
|
+
}
|
|
68
|
+
if (connectorConfig.pubsub) {
|
|
69
|
+
context.pubsub = await this.connectionBroker.graphqlPubsub;
|
|
70
|
+
}
|
|
71
|
+
if (connectorConfig.inngest) {
|
|
72
|
+
context.inngestClient = createInngestClient(this.logger);
|
|
73
|
+
}
|
|
74
|
+
return context;
|
|
75
|
+
}
|
|
76
|
+
createServiceBroker(type, nodeId, enableMetrics = true) {
|
|
77
|
+
const config = {
|
|
78
|
+
...brokerConfig,
|
|
79
|
+
metrics: { enabled: enableMetrics },
|
|
80
|
+
...(nodeId && { nodeID: nodeId }),
|
|
81
|
+
};
|
|
82
|
+
if (type === 'main') {
|
|
83
|
+
config.middlewares = [
|
|
84
|
+
InterNamespaceMiddleware([
|
|
85
|
+
{
|
|
86
|
+
namespace: 'api-admin',
|
|
87
|
+
transporter: brokerConfig.transporter,
|
|
88
|
+
metrics: { enabled: false },
|
|
89
|
+
},
|
|
90
|
+
]),
|
|
91
|
+
];
|
|
92
|
+
}
|
|
93
|
+
return new ServiceBroker(config);
|
|
94
|
+
}
|
|
95
|
+
getConnectionBroker() {
|
|
96
|
+
return this.connectionBroker;
|
|
97
|
+
}
|
|
98
|
+
async cleanup() {
|
|
99
|
+
if (this.connectionBroker) {
|
|
100
|
+
await this.connectionBroker.stop();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Factory methods for common configurations
|
|
104
|
+
static createMainServiceConfig() {
|
|
105
|
+
return {
|
|
106
|
+
type: 'main',
|
|
107
|
+
connectorConfig: CONNECTOR_CONFIGS.FULL,
|
|
108
|
+
enableMetrics: true,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
static createMicroserviceConfig(nodeId) {
|
|
112
|
+
return {
|
|
113
|
+
type: 'microservice',
|
|
114
|
+
nodeId: nodeId || `microservice-node-${Date.now()}`,
|
|
115
|
+
connectorConfig: CONNECTOR_CONFIGS.MICROSERVICE,
|
|
116
|
+
enableMetrics: false,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
static createDevelopmentMicroserviceConfig() {
|
|
120
|
+
return {
|
|
121
|
+
type: 'microservice',
|
|
122
|
+
nodeId: 'node-broker-2',
|
|
123
|
+
connectorConfig: CONNECTOR_CONFIGS.DEVELOPMENT,
|
|
124
|
+
enableMetrics: false,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
}export{InfrastructureFactory};//# sourceMappingURL=infrastructure-factory.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infrastructure-factory.mjs","sources":["../../src/infrastructure/infrastructure-factory.ts"],"sourcesContent":[null],"names":["ServerFeature"],"mappings":"ofAoBa,qBAAqB,CAAA;AACtB,IAAA,MAAM,CAAoB;AAC1B,IAAA,gBAAgB,CAAmB;AACnC,IAAA,YAAY,CAAuB;AAE3C,IAAA,WAAA,CAAY,MAAyB,EAAA;AACjC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACxB;AAEM,IAAA,MAAM,UAAU,GAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KACvF;IAEM,MAAM,wBAAwB,CACjC,OAAoC,EACpC,aAA4B,EAC5B,QAAa,EACb,kBAAkC,EAAA;AAOlC,QAAA,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,GAAG,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;;QAGxF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,CAAC;;AAGxE,QAAA,MAAM,MAAM,GAAyB;AACjC,YAAA,UAAU,EAAE,eAAe;YAC3B,SAAS;AACT,YAAA,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa;SACrD,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;;AAGrD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;AACrE,QAAA,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;;QAGxB,MAAM,WAAW,GAAG,0BAA0B,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AACzE,QAAA,MAAM,OAAO,GAAG,IAAIA,OAAa,CAAC;YAC9B,mBAAmB,EAAE,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAC;YAChD,yBAAyB,EAAE,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAC;AACzD,SAAA,CAAC,CAAC;;QAGH,MAAM,UAAU,GAAG,kBAAkB,IAAI,IAAIA,OAAa,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAEnF,QAAA,IAAI,SAAoB,CAAC;AACzB,QAAA,IAAI,IAAI,KAAK,MAAM,EAAE;AACjB,YAAA,SAAS,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,EAAE,GAAG,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;SACxG;aAAM;AACH,YAAA,SAAS,GAAG,MAAM,UAAU,CAAC,sBAAsB,CAAC,EAAE,GAAG,QAAQ,EAAE,eAAe,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;SAC9G;;AAGD,QAAA,IAAI,IAAI,KAAK,MAAM,EAAE;YACjB,UAAU,CAAC,wBAAwB,CAAC;gBAChC,MAAM;gBACN,SAAS;gBACT,QAAQ;AACX,aAAA,CAAC,CAAC;SACN;aAAM;YACH,UAAU,CAAC,0BAA0B,CAAC;gBAClC,MAAM;gBACN,SAAS;gBACT,QAAQ;AACX,aAAA,CAAC,CAAC;SACN;QAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;KACrD;IAEO,MAAM,2BAA2B,CAAC,eAAgC,EAAA;AACtE,QAAA,MAAM,OAAO,GAAmC;YAC5C,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC;AAEF,QAAA,IAAI,eAAe,CAAC,KAAK,EAAE;YACvB,OAAO,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;SACrE;AAED,QAAA,IAAI,eAAe,CAAC,KAAK,EAAE;YACvB,OAAO,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;SACrE;AAED,QAAA,IAAI,eAAe,CAAC,MAAM,EAAE;YACxB,OAAO,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;SAC9D;AAED,QAAA,IAAI,eAAe,CAAC,OAAO,EAAE;YACzB,OAAO,CAAC,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC5D;AAED,QAAA,OAAO,OAAgC,CAAC;KAC3C;AAEO,IAAA,mBAAmB,CAAC,IAA6B,EAAE,MAAe,EAAE,aAAa,GAAG,IAAI,EAAA;AAC5F,QAAA,MAAM,MAAM,GAAG;AACX,YAAA,GAAG,YAAY;AACf,YAAA,OAAO,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;YACnC,IAAI,MAAM,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;SACpC,CAAC;AAEF,QAAA,IAAI,IAAI,KAAK,MAAM,EAAE;YACjB,MAAM,CAAC,WAAW,GAAG;AACjB,gBAAA,wBAAwB,CAAC;AACrB,oBAAA;AACI,wBAAA,SAAS,EAAE,WAAW;wBACtB,WAAW,EAAE,YAAY,CAAC,WAAW;AACrC,wBAAA,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;AAC9B,qBAAA;iBACJ,CAAC;aACL,CAAC;SACL;AAED,QAAA,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;KACpC;IAEM,mBAAmB,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAEM,IAAA,MAAM,OAAO,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;SACtC;KACJ;;AAGM,IAAA,OAAO,uBAAuB,GAAA;QACjC,OAAO;AACH,YAAA,IAAI,EAAE,MAAM;YACZ,eAAe,EAAE,iBAAiB,CAAC,IAAI;AACvC,YAAA,aAAa,EAAE,IAAI;SACtB,CAAC;KACL;IAEM,OAAO,wBAAwB,CAAC,MAAe,EAAA;QAClD,OAAO;AACH,YAAA,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,MAAM,IAAI,CAAA,kBAAA,EAAqB,IAAI,CAAC,GAAG,EAAE,CAAE,CAAA;YACnD,eAAe,EAAE,iBAAiB,CAAC,YAAY;AAC/C,YAAA,aAAa,EAAE,KAAK;SACvB,CAAC;KACL;AAEM,IAAA,OAAO,mCAAmC,GAAA;QAC7C,OAAO;AACH,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,MAAM,EAAE,eAAe;YACvB,eAAe,EAAE,iBAAiB,CAAC,WAAW;AAC9C,YAAA,aAAa,EAAE,KAAK;SACvB,CAAC;KACL;AACJ"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';var inngest=require('inngest'),envConfig=require('../config/env-config.cjs');const generateInngestClientId = (configParams, logger) => {
|
|
2
|
+
const { APP_NAME, NODE_ENV, INNGEST_CLIENT_ID } = configParams;
|
|
3
|
+
if (INNGEST_CLIENT_ID) {
|
|
4
|
+
return INNGEST_CLIENT_ID;
|
|
5
|
+
}
|
|
6
|
+
const inngestId = `${APP_NAME}-${NODE_ENV}-${Date.now()}`;
|
|
7
|
+
logger.info(`Generated Inngest client ID: ${inngestId}`);
|
|
8
|
+
return inngestId;
|
|
9
|
+
};
|
|
10
|
+
const createInngestClient = (logger) => {
|
|
11
|
+
// Generate unique Inngest client ID for multi-developer environments
|
|
12
|
+
const inngestId = generateInngestClientId({
|
|
13
|
+
APP_NAME: envConfig.config.APP_NAME,
|
|
14
|
+
NODE_ENV: envConfig.config.NODE_ENV,
|
|
15
|
+
INNGEST_CLIENT_ID: envConfig.config.INNGEST_CLIENT_ID,
|
|
16
|
+
}, logger);
|
|
17
|
+
// Create Inngest client
|
|
18
|
+
return new inngest.Inngest({
|
|
19
|
+
id: inngestId,
|
|
20
|
+
eventKey: envConfig.config.INNGEST_EVENT_KEY,
|
|
21
|
+
signingKey: envConfig.config.INNGEST_SIGNING_KEY,
|
|
22
|
+
isDev: envConfig.config.INNGEST_IS_DEV,
|
|
23
|
+
env: envConfig.config.INNGEST_ENVIRONMENT,
|
|
24
|
+
baseUrl: envConfig.config.INNGEST_BASE_URL,
|
|
25
|
+
});
|
|
26
|
+
};exports.createInngestClient=createInngestClient;exports.generateInngestClientId=generateInngestClientId;//# sourceMappingURL=inngest-factory.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inngest-factory.cjs","sources":["../../src/infrastructure/inngest-factory.ts"],"sourcesContent":[null],"names":["config","Inngest"],"mappings":"gGAIa,uBAAuB,GAAG,CACnC,YAIC,EACD,MAAyB,KACjB;IACR,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,YAAY,CAAC;IAE/D,IAAI,iBAAiB,EAAE;AACnB,QAAA,OAAO,iBAAiB,CAAC;KAC5B;AAED,IAAA,MAAM,SAAS,GAAG,CAAG,EAAA,QAAQ,CAAI,CAAA,EAAA,QAAQ,CAAI,CAAA,EAAA,IAAI,CAAC,GAAG,EAAE,CAAA,CAAE,CAAC;AAC1D,IAAA,MAAM,CAAC,IAAI,CAAC,gCAAgC,SAAS,CAAA,CAAE,CAAC,CAAC;AACzD,IAAA,OAAO,SAAS,CAAC;AACrB,EAAE;AAEW,MAAA,mBAAmB,GAAG,CAAC,MAAyB,KAAa;;IAEtE,MAAM,SAAS,GAAG,uBAAuB,CACrC;QACI,QAAQ,EAAEA,gBAAM,CAAC,QAAQ;QACzB,QAAQ,EAAEA,gBAAM,CAAC,QAAQ;QACzB,iBAAiB,EAAEA,gBAAM,CAAC,iBAAiB;KAC9C,EACD,MAAM,CACT,CAAC;;IAGF,OAAO,IAAIC,eAAO,CAAC;AACf,QAAA,EAAE,EAAE,SAAS;QACb,QAAQ,EAAED,gBAAM,CAAC,iBAAiB;QAClC,UAAU,EAAEA,gBAAM,CAAC,mBAAmB;QACtC,KAAK,EAAEA,gBAAM,CAAC,cAAc;QAC5B,GAAG,EAAEA,gBAAM,CAAC,mBAAmB;QAC/B,OAAO,EAAEA,gBAAM,CAAC,gBAAgB;AACnC,KAAA,CAAC,CAAC;AACP"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Inngest } from 'inngest';
|
|
2
|
+
import { CdmLogger } from '@cdm-logger/core';
|
|
3
|
+
export declare const generateInngestClientId: (configParams: {
|
|
4
|
+
APP_NAME: string;
|
|
5
|
+
NODE_ENV: string;
|
|
6
|
+
INNGEST_CLIENT_ID?: string;
|
|
7
|
+
}, logger: CdmLogger.ILogger) => string;
|
|
8
|
+
export declare const createInngestClient: (logger: CdmLogger.ILogger) => Inngest;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import {Inngest}from'inngest';import {config}from'../config/env-config.mjs';const generateInngestClientId = (configParams, logger) => {
|
|
2
|
+
const { APP_NAME, NODE_ENV, INNGEST_CLIENT_ID } = configParams;
|
|
3
|
+
if (INNGEST_CLIENT_ID) {
|
|
4
|
+
return INNGEST_CLIENT_ID;
|
|
5
|
+
}
|
|
6
|
+
const inngestId = `${APP_NAME}-${NODE_ENV}-${Date.now()}`;
|
|
7
|
+
logger.info(`Generated Inngest client ID: ${inngestId}`);
|
|
8
|
+
return inngestId;
|
|
9
|
+
};
|
|
10
|
+
const createInngestClient = (logger) => {
|
|
11
|
+
// Generate unique Inngest client ID for multi-developer environments
|
|
12
|
+
const inngestId = generateInngestClientId({
|
|
13
|
+
APP_NAME: config.APP_NAME,
|
|
14
|
+
NODE_ENV: config.NODE_ENV,
|
|
15
|
+
INNGEST_CLIENT_ID: config.INNGEST_CLIENT_ID,
|
|
16
|
+
}, logger);
|
|
17
|
+
// Create Inngest client
|
|
18
|
+
return new Inngest({
|
|
19
|
+
id: inngestId,
|
|
20
|
+
eventKey: config.INNGEST_EVENT_KEY,
|
|
21
|
+
signingKey: config.INNGEST_SIGNING_KEY,
|
|
22
|
+
isDev: config.INNGEST_IS_DEV,
|
|
23
|
+
env: config.INNGEST_ENVIRONMENT,
|
|
24
|
+
baseUrl: config.INNGEST_BASE_URL,
|
|
25
|
+
});
|
|
26
|
+
};export{createInngestClient,generateInngestClientId};//# sourceMappingURL=inngest-factory.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inngest-factory.mjs","sources":["../../src/infrastructure/inngest-factory.ts"],"sourcesContent":[null],"names":[],"mappings":"kFAIa,uBAAuB,GAAG,CACnC,YAIC,EACD,MAAyB,KACjB;IACR,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,YAAY,CAAC;IAE/D,IAAI,iBAAiB,EAAE;AACnB,QAAA,OAAO,iBAAiB,CAAC;KAC5B;AAED,IAAA,MAAM,SAAS,GAAG,CAAG,EAAA,QAAQ,CAAI,CAAA,EAAA,QAAQ,CAAI,CAAA,EAAA,IAAI,CAAC,GAAG,EAAE,CAAA,CAAE,CAAC;AAC1D,IAAA,MAAM,CAAC,IAAI,CAAC,gCAAgC,SAAS,CAAA,CAAE,CAAC,CAAC;AACzD,IAAA,OAAO,SAAS,CAAC;AACrB,EAAE;AAEW,MAAA,mBAAmB,GAAG,CAAC,MAAyB,KAAa;;IAEtE,MAAM,SAAS,GAAG,uBAAuB,CACrC;QACI,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;KAC9C,EACD,MAAM,CACT,CAAC;;IAGF,OAAO,IAAI,OAAO,CAAC;AACf,QAAA,EAAE,EAAE,SAAS;QACb,QAAQ,EAAE,MAAM,CAAC,iBAAiB;QAClC,UAAU,EAAE,MAAM,CAAC,mBAAmB;QACtC,KAAK,EAAE,MAAM,CAAC,cAAc;QAC5B,GAAG,EAAE,MAAM,CAAC,mBAAmB;QAC/B,OAAO,EAAE,MAAM,CAAC,gBAAgB;AACnC,KAAA,CAAC,CAAC;AACP"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ServiceBroker } from 'moleculer';
|
|
2
|
+
import { CdmLogger } from '@cdm-logger/core';
|
|
3
|
+
import { Inngest } from 'inngest';
|
|
4
|
+
export interface InfrastructureContext {
|
|
5
|
+
broker: ServiceBroker;
|
|
6
|
+
pubsub: any;
|
|
7
|
+
mongoClient: any;
|
|
8
|
+
logger: CdmLogger.ILogger;
|
|
9
|
+
redisClient: any;
|
|
10
|
+
inngestClient?: Inngest;
|
|
11
|
+
}
|
|
12
|
+
export interface WorkflowStep {
|
|
13
|
+
name: string;
|
|
14
|
+
order: number;
|
|
15
|
+
enabled: boolean;
|
|
16
|
+
execute: (context: InfrastructureContext) => Promise<void> | void;
|
|
17
|
+
}
|
|
18
|
+
export interface ConnectorConfig {
|
|
19
|
+
redis: boolean;
|
|
20
|
+
mongo: boolean;
|
|
21
|
+
pubsub: boolean;
|
|
22
|
+
inngest: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface InfrastructureConfig {
|
|
25
|
+
connectors: ConnectorConfig;
|
|
26
|
+
workflows: WorkflowStep[];
|
|
27
|
+
environment: string;
|
|
28
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MainStackServer } from '../MainStackServer';
|
|
2
|
+
import { StackServer } from '../StackServer';
|
|
3
|
+
/**
|
|
4
|
+
* Example usage of the new modular infrastructure system
|
|
5
|
+
*/
|
|
6
|
+
export declare function startMainServer(): Promise<MainStackServer>;
|
|
7
|
+
export declare function startMicroservice(): Promise<StackServer>;
|
|
8
|
+
export declare function startServerWithCustomWorkflows(): Promise<MainStackServer>;
|
|
9
|
+
export declare function getEnvironmentConfig(environment: string): import("./types").ConnectorConfig;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
'use strict';class WorkflowOrchestrator {
|
|
2
|
+
config;
|
|
3
|
+
steps;
|
|
4
|
+
constructor(config) {
|
|
5
|
+
this.config = config;
|
|
6
|
+
this.steps = [...config.workflows].sort((a, b) => a.order - b.order);
|
|
7
|
+
}
|
|
8
|
+
addStep(step) {
|
|
9
|
+
this.steps.push(step);
|
|
10
|
+
this.steps.sort((a, b) => a.order - b.order);
|
|
11
|
+
}
|
|
12
|
+
async executeWorkflow(context) {
|
|
13
|
+
for (const step of this.steps) {
|
|
14
|
+
if (step.enabled) {
|
|
15
|
+
try {
|
|
16
|
+
await step.execute(context);
|
|
17
|
+
context.logger?.debug(`Workflow step '${step.name}' completed successfully`);
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
context.logger?.error(`Workflow step '${step.name}' failed:`, error);
|
|
21
|
+
throw error;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
context.logger?.debug(`Workflow step '${step.name}' skipped (disabled)`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
getEnabledSteps() {
|
|
30
|
+
return this.steps.filter((step) => step.enabled);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// Predefined connector configurations
|
|
34
|
+
const CONNECTOR_CONFIGS = {
|
|
35
|
+
FULL: {
|
|
36
|
+
redis: true,
|
|
37
|
+
mongo: true,
|
|
38
|
+
pubsub: true,
|
|
39
|
+
inngest: true,
|
|
40
|
+
},
|
|
41
|
+
BASIC: {
|
|
42
|
+
redis: false,
|
|
43
|
+
mongo: true,
|
|
44
|
+
pubsub: true,
|
|
45
|
+
inngest: false,
|
|
46
|
+
},
|
|
47
|
+
MICROSERVICE: {
|
|
48
|
+
redis: true,
|
|
49
|
+
mongo: true,
|
|
50
|
+
pubsub: true,
|
|
51
|
+
inngest: true,
|
|
52
|
+
},
|
|
53
|
+
DEVELOPMENT: {
|
|
54
|
+
redis: true,
|
|
55
|
+
mongo: true,
|
|
56
|
+
pubsub: true,
|
|
57
|
+
inngest: true,
|
|
58
|
+
},
|
|
59
|
+
};exports.CONNECTOR_CONFIGS=CONNECTOR_CONFIGS;exports.WorkflowOrchestrator=WorkflowOrchestrator;//# sourceMappingURL=workflow-orchestrator.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-orchestrator.cjs","sources":["../../src/infrastructure/workflow-orchestrator.ts"],"sourcesContent":[null],"names":[],"mappings":"mBAEa,oBAAoB,CAAA;AACrB,IAAA,MAAM,CAAuB;AAC7B,IAAA,KAAK,CAAiB;AAE9B,IAAA,WAAA,CAAY,MAA4B,EAAA;AACpC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;KACxE;AAEM,IAAA,OAAO,CAAC,IAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;KAChD;IAEM,MAAM,eAAe,CAAC,OAAY,EAAA;AACrC,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AAC3B,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,gBAAA,IAAI;AACA,oBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC5B,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAkB,eAAA,EAAA,IAAI,CAAC,IAAI,CAA0B,wBAAA,CAAA,CAAC,CAAC;iBAChF;gBAAC,OAAO,KAAK,EAAE;AACZ,oBAAA,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA,eAAA,EAAkB,IAAI,CAAC,IAAI,CAAA,SAAA,CAAW,EAAE,KAAK,CAAC,CAAC;AACrE,oBAAA,MAAM,KAAK,CAAC;iBACf;aACJ;iBAAM;gBACH,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAkB,eAAA,EAAA,IAAI,CAAC,IAAI,CAAsB,oBAAA,CAAA,CAAC,CAAC;aAC5E;SACJ;KACJ;IAEM,eAAe,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;KACpD;AACJ,CAAA;AAED;AACa,MAAA,iBAAiB,GAAoC;AAC9D,IAAA,IAAI,EAAE;AACF,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,OAAO,EAAE,IAAI;AAChB,KAAA;AACD,IAAA,KAAK,EAAE;AACH,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,OAAO,EAAE,KAAK;AACjB,KAAA;AACD,IAAA,YAAY,EAAE;AACV,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,OAAO,EAAE,IAAI;AAChB,KAAA;AACD,IAAA,WAAW,EAAE;AACT,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,OAAO,EAAE,IAAI;AAChB,KAAA;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { InfrastructureConfig, WorkflowStep, ConnectorConfig } from './types';
|
|
2
|
+
export declare class WorkflowOrchestrator {
|
|
3
|
+
private config;
|
|
4
|
+
private steps;
|
|
5
|
+
constructor(config: InfrastructureConfig);
|
|
6
|
+
addStep(step: WorkflowStep): void;
|
|
7
|
+
executeWorkflow(context: any): Promise<void>;
|
|
8
|
+
getEnabledSteps(): WorkflowStep[];
|
|
9
|
+
}
|
|
10
|
+
export declare const CONNECTOR_CONFIGS: Record<string, ConnectorConfig>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
class WorkflowOrchestrator {
|
|
2
|
+
config;
|
|
3
|
+
steps;
|
|
4
|
+
constructor(config) {
|
|
5
|
+
this.config = config;
|
|
6
|
+
this.steps = [...config.workflows].sort((a, b) => a.order - b.order);
|
|
7
|
+
}
|
|
8
|
+
addStep(step) {
|
|
9
|
+
this.steps.push(step);
|
|
10
|
+
this.steps.sort((a, b) => a.order - b.order);
|
|
11
|
+
}
|
|
12
|
+
async executeWorkflow(context) {
|
|
13
|
+
for (const step of this.steps) {
|
|
14
|
+
if (step.enabled) {
|
|
15
|
+
try {
|
|
16
|
+
await step.execute(context);
|
|
17
|
+
context.logger?.debug(`Workflow step '${step.name}' completed successfully`);
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
context.logger?.error(`Workflow step '${step.name}' failed:`, error);
|
|
21
|
+
throw error;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
context.logger?.debug(`Workflow step '${step.name}' skipped (disabled)`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
getEnabledSteps() {
|
|
30
|
+
return this.steps.filter((step) => step.enabled);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// Predefined connector configurations
|
|
34
|
+
const CONNECTOR_CONFIGS = {
|
|
35
|
+
FULL: {
|
|
36
|
+
redis: true,
|
|
37
|
+
mongo: true,
|
|
38
|
+
pubsub: true,
|
|
39
|
+
inngest: true,
|
|
40
|
+
},
|
|
41
|
+
BASIC: {
|
|
42
|
+
redis: false,
|
|
43
|
+
mongo: true,
|
|
44
|
+
pubsub: true,
|
|
45
|
+
inngest: false,
|
|
46
|
+
},
|
|
47
|
+
MICROSERVICE: {
|
|
48
|
+
redis: true,
|
|
49
|
+
mongo: true,
|
|
50
|
+
pubsub: true,
|
|
51
|
+
inngest: true,
|
|
52
|
+
},
|
|
53
|
+
DEVELOPMENT: {
|
|
54
|
+
redis: true,
|
|
55
|
+
mongo: true,
|
|
56
|
+
pubsub: true,
|
|
57
|
+
inngest: true,
|
|
58
|
+
},
|
|
59
|
+
};export{CONNECTOR_CONFIGS,WorkflowOrchestrator};//# sourceMappingURL=workflow-orchestrator.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-orchestrator.mjs","sources":["../../src/infrastructure/workflow-orchestrator.ts"],"sourcesContent":[null],"names":[],"mappings":"MAEa,oBAAoB,CAAA;AACrB,IAAA,MAAM,CAAuB;AAC7B,IAAA,KAAK,CAAiB;AAE9B,IAAA,WAAA,CAAY,MAA4B,EAAA;AACpC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;KACxE;AAEM,IAAA,OAAO,CAAC,IAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;KAChD;IAEM,MAAM,eAAe,CAAC,OAAY,EAAA;AACrC,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AAC3B,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,gBAAA,IAAI;AACA,oBAAA,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC5B,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAkB,eAAA,EAAA,IAAI,CAAC,IAAI,CAA0B,wBAAA,CAAA,CAAC,CAAC;iBAChF;gBAAC,OAAO,KAAK,EAAE;AACZ,oBAAA,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA,eAAA,EAAkB,IAAI,CAAC,IAAI,CAAA,SAAA,CAAW,EAAE,KAAK,CAAC,CAAC;AACrE,oBAAA,MAAM,KAAK,CAAC;iBACf;aACJ;iBAAM;gBACH,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAkB,eAAA,EAAA,IAAI,CAAC,IAAI,CAAsB,oBAAA,CAAA,CAAC,CAAC;aAC5E;SACJ;KACJ;IAEM,eAAe,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;KACpD;AACJ,CAAA;AAED;AACa,MAAA,iBAAiB,GAAoC;AAC9D,IAAA,IAAI,EAAE;AACF,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,OAAO,EAAE,IAAI;AAChB,KAAA;AACD,IAAA,KAAK,EAAE;AACH,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,OAAO,EAAE,KAAK;AACjB,KAAA;AACD,IAAA,YAAY,EAAE;AACV,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,OAAO,EAAE,IAAI;AAChB,KAAA;AACD,IAAA,WAAW,EAAE;AACT,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,OAAO,EAAE,IAAI;AAChB,KAAA;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface InngestClientIdConfig {
|
|
2
|
+
APP_NAME: string;
|
|
3
|
+
NODE_ENV: string;
|
|
4
|
+
INNGEST_CLIENT_ID?: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Generates a unique Inngest client ID for multi-developer environments
|
|
8
|
+
* Combines app name, environment, username, and hostname for uniqueness
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateInngestClientId(config: InngestClientIdConfig, logger?: any): string;
|
|
11
|
+
/**
|
|
12
|
+
* Examples of generated IDs:
|
|
13
|
+
*
|
|
14
|
+
* Production:
|
|
15
|
+
* - APP_NAME=OrderAPI, NODE_ENV=production → "orderapi"
|
|
16
|
+
*
|
|
17
|
+
* Staging:
|
|
18
|
+
* - APP_NAME=OrderAPI, NODE_ENV=staging → "orderapi-staging"
|
|
19
|
+
*
|
|
20
|
+
* Development:
|
|
21
|
+
* - APP_NAME=OrderAPI, NODE_ENV=development, USER=john, HOSTNAME=macbook-pro
|
|
22
|
+
* → "orderapi-development-john-macbookp"
|
|
23
|
+
*
|
|
24
|
+
* - APP_NAME=OrderAPI, NODE_ENV=development, USER=mary, HOSTNAME=mary-laptop
|
|
25
|
+
* → "orderapi-development-mary-marylap"
|
|
26
|
+
*
|
|
27
|
+
* Explicit Override:
|
|
28
|
+
* - INNGEST_CLIENT_ID=custom-client-id → "custom-client-id"
|
|
29
|
+
*/
|