@common-stack/server-stack 8.0.2-alpha.0 → 8.2.1-alpha.0
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/LICENSE +34 -21
- package/lib/MainStackServer.cjs +126 -146
- package/lib/MainStackServer.cjs.map +1 -1
- package/lib/MainStackServer.d.ts +12 -6
- package/lib/MainStackServer.mjs +126 -146
- 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 +147 -0
- package/lib/api/sub-graph-schema-builder.cjs.map +1 -0
- package/lib/api/sub-graph-schema-builder.d.ts +24 -0
- package/lib/api/sub-graph-schema-builder.mjs +147 -0
- package/lib/api/sub-graph-schema-builder.mjs.map +1 -0
- 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 +172 -0
- package/lib/infrastructure/infrastructure-factory.cjs.map +1 -0
- package/lib/infrastructure/infrastructure-factory.d.ts +36 -0
- package/lib/infrastructure/infrastructure-factory.mjs +172 -0
- package/lib/infrastructure/infrastructure-factory.mjs.map +1 -0
- package/lib/infrastructure/inngest-factory.cjs +47 -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 +47 -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 +24 -0
- package/lib/inngest/middleware/auto-resolve-invoke.middleware.cjs +275 -0
- package/lib/inngest/middleware/auto-resolve-invoke.middleware.cjs.map +1 -0
- package/lib/inngest/middleware/auto-resolve-invoke.middleware.d.ts +111 -0
- package/lib/inngest/middleware/auto-resolve-invoke.middleware.mjs +275 -0
- package/lib/inngest/middleware/auto-resolve-invoke.middleware.mjs.map +1 -0
- package/lib/inngest/middleware/function-reference-helper.cjs +363 -0
- package/lib/inngest/middleware/function-reference-helper.cjs.map +1 -0
- package/lib/inngest/middleware/function-reference-helper.d.ts +211 -0
- package/lib/inngest/middleware/function-reference-helper.mjs +363 -0
- package/lib/inngest/middleware/function-reference-helper.mjs.map +1 -0
- package/lib/inngest/middleware/index.d.ts +31 -0
- package/lib/inngest/middleware/types.d.ts +162 -0
- package/lib/inngest/multi-module-functions.d.ts +133 -0
- package/lib/inngest/setup.cjs +55 -0
- package/lib/inngest/setup.cjs.map +1 -0
- package/lib/inngest/setup.d.ts +10 -0
- package/lib/inngest/setup.mjs +55 -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 +2 -2
- package/lib/plugins/responseCachePlugin.cjs.map +1 -1
- package/lib/plugins/responseCachePlugin.mjs +2 -2
- package/lib/plugins/responseCachePlugin.mjs.map +1 -1
- package/lib/servers/ExpressApp.cjs +8 -3
- package/lib/servers/ExpressApp.cjs.map +1 -1
- package/lib/servers/ExpressApp.d.ts +1 -1
- package/lib/servers/ExpressApp.mjs +8 -3
- 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/GraphqlWs.cjs +3 -44
- package/lib/servers/GraphqlWs.cjs.map +1 -1
- package/lib/servers/GraphqlWs.mjs +3 -44
- package/lib/servers/GraphqlWs.mjs.map +1 -1
- package/lib/servers/WebsocketMultipathUpdate.cjs +4 -2
- package/lib/servers/WebsocketMultipathUpdate.cjs.map +1 -1
- package/lib/servers/WebsocketMultipathUpdate.mjs +4 -2
- package/lib/servers/WebsocketMultipathUpdate.mjs.map +1 -1
- package/lib/servers/mongodb-migration-update.d.ts +1 -1
- package/lib/servers/websocket-context.cjs +70 -0
- package/lib/servers/websocket-context.cjs.map +1 -0
- package/lib/servers/websocket-context.d.ts +30 -0
- package/lib/servers/websocket-context.mjs +70 -0
- package/lib/servers/websocket-context.mjs.map +1 -0
- package/lib/utils/add-shareable-directive-to-schema.cjs +44 -0
- package/lib/utils/add-shareable-directive-to-schema.cjs.map +1 -0
- package/lib/utils/add-shareable-directive-to-schema.d.ts +1 -0
- package/lib/utils/add-shareable-directive-to-schema.mjs +44 -0
- package/lib/utils/add-shareable-directive-to-schema.mjs.map +1 -0
- package/lib/utils/index.d.ts +2 -0
- package/lib/utils/safe-model-factory.d.ts +18 -0
- package/package.json +15 -11
- 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
- package/lib/plugins/invalidateCachePlugin.test.d.ts +0 -1
- package/lib/plugins/response-cache-plugin.test.d.ts +0 -1
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { Container } from 'inversify';
|
|
2
|
+
/**
|
|
3
|
+
* User management Inngest functions that depend on container services
|
|
4
|
+
*/
|
|
5
|
+
export declare const userInngestFunctions: ({ container, inngest, settings, }: {
|
|
6
|
+
container: Container;
|
|
7
|
+
inngest: any;
|
|
8
|
+
settings?: any;
|
|
9
|
+
}) => {
|
|
10
|
+
createUserFunction: {
|
|
11
|
+
id: string;
|
|
12
|
+
_type: string;
|
|
13
|
+
};
|
|
14
|
+
updateUserProfileFunction: {
|
|
15
|
+
id: string;
|
|
16
|
+
_type: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Email campaign Inngest functions that depend on container services
|
|
21
|
+
*/
|
|
22
|
+
export declare const emailCampaignInngestFunctions: ({ container, inngest, settings, }: {
|
|
23
|
+
container: Container;
|
|
24
|
+
inngest: any;
|
|
25
|
+
settings?: any;
|
|
26
|
+
}) => {
|
|
27
|
+
sendCampaignFunction: {
|
|
28
|
+
id: string;
|
|
29
|
+
_type: string;
|
|
30
|
+
};
|
|
31
|
+
trackEmailOpenFunction: {
|
|
32
|
+
id: string;
|
|
33
|
+
_type: string;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Analytics Inngest functions that depend on container services
|
|
38
|
+
*/
|
|
39
|
+
export declare const analyticsInngestFunctions: ({ container, inngest, settings, }: {
|
|
40
|
+
container: Container;
|
|
41
|
+
inngest: any;
|
|
42
|
+
settings?: any;
|
|
43
|
+
}) => {
|
|
44
|
+
generateReportFunction: {
|
|
45
|
+
id: string;
|
|
46
|
+
_type: string;
|
|
47
|
+
};
|
|
48
|
+
trackUserEventFunction: {
|
|
49
|
+
id: string;
|
|
50
|
+
_type: string;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* AI Page Creator functions that depend on container services
|
|
55
|
+
*/
|
|
56
|
+
export declare const aiPageCreatorInngestFunctions: ({ container, inngest, settings, }: {
|
|
57
|
+
container: Container;
|
|
58
|
+
inngest: any;
|
|
59
|
+
settings?: any;
|
|
60
|
+
}) => {
|
|
61
|
+
codeAgentFunction: {
|
|
62
|
+
id: string;
|
|
63
|
+
_type: string;
|
|
64
|
+
};
|
|
65
|
+
sendMessageFunction: {
|
|
66
|
+
id: string;
|
|
67
|
+
_type: string;
|
|
68
|
+
};
|
|
69
|
+
processPageFunction: {
|
|
70
|
+
id: string;
|
|
71
|
+
_type: string;
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Export array of all function factories for easy registration
|
|
76
|
+
*/
|
|
77
|
+
export declare const allInngestFunctionFactories: ((({ container, inngest, settings, }: {
|
|
78
|
+
container: Container;
|
|
79
|
+
inngest: any;
|
|
80
|
+
settings?: any;
|
|
81
|
+
}) => {
|
|
82
|
+
createUserFunction: {
|
|
83
|
+
id: string;
|
|
84
|
+
_type: string;
|
|
85
|
+
};
|
|
86
|
+
updateUserProfileFunction: {
|
|
87
|
+
id: string;
|
|
88
|
+
_type: string;
|
|
89
|
+
};
|
|
90
|
+
}) | (({ container, inngest, settings, }: {
|
|
91
|
+
container: Container;
|
|
92
|
+
inngest: any;
|
|
93
|
+
settings?: any;
|
|
94
|
+
}) => {
|
|
95
|
+
sendCampaignFunction: {
|
|
96
|
+
id: string;
|
|
97
|
+
_type: string;
|
|
98
|
+
};
|
|
99
|
+
trackEmailOpenFunction: {
|
|
100
|
+
id: string;
|
|
101
|
+
_type: string;
|
|
102
|
+
};
|
|
103
|
+
}) | (({ container, inngest, settings, }: {
|
|
104
|
+
container: Container;
|
|
105
|
+
inngest: any;
|
|
106
|
+
settings?: any;
|
|
107
|
+
}) => {
|
|
108
|
+
generateReportFunction: {
|
|
109
|
+
id: string;
|
|
110
|
+
_type: string;
|
|
111
|
+
};
|
|
112
|
+
trackUserEventFunction: {
|
|
113
|
+
id: string;
|
|
114
|
+
_type: string;
|
|
115
|
+
};
|
|
116
|
+
}) | (({ container, inngest, settings, }: {
|
|
117
|
+
container: Container;
|
|
118
|
+
inngest: any;
|
|
119
|
+
settings?: any;
|
|
120
|
+
}) => {
|
|
121
|
+
codeAgentFunction: {
|
|
122
|
+
id: string;
|
|
123
|
+
_type: string;
|
|
124
|
+
};
|
|
125
|
+
sendMessageFunction: {
|
|
126
|
+
id: string;
|
|
127
|
+
_type: string;
|
|
128
|
+
};
|
|
129
|
+
processPageFunction: {
|
|
130
|
+
id: string;
|
|
131
|
+
_type: string;
|
|
132
|
+
};
|
|
133
|
+
}))[];
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use strict';var express=require('inngest/express'),functionReferenceHelper=require('./middleware/function-reference-helper.cjs');/**
|
|
2
|
+
* Sets up Inngest functions from the Feature system and registers the handler
|
|
3
|
+
*/
|
|
4
|
+
async function setupInngestFunctions(modules, app, serviceContainer, logger) {
|
|
5
|
+
try {
|
|
6
|
+
// Get Inngest client from the container (already bound in infraModule)
|
|
7
|
+
const inngestClient = serviceContainer.get('INNGEST_CLIENT');
|
|
8
|
+
logger.info('✅ Retrieved Inngest client from service container');
|
|
9
|
+
// Load Inngest functions from all modules
|
|
10
|
+
// The improved loadInngestFunctions now handles both array and object returns
|
|
11
|
+
const inngestFunctions = await modules.loadInngestFunctions({
|
|
12
|
+
container: serviceContainer,
|
|
13
|
+
inngest: inngestClient,
|
|
14
|
+
settings: {},
|
|
15
|
+
});
|
|
16
|
+
if (inngestFunctions.length > 0) {
|
|
17
|
+
logger.info(`✅ Loaded ${inngestFunctions.length} Inngest functions from Feature system`);
|
|
18
|
+
// Log function IDs for debugging
|
|
19
|
+
const functionIds = inngestFunctions
|
|
20
|
+
.filter((fn) => fn && fn.id)
|
|
21
|
+
.map((fn) => (typeof fn.id === 'function' ? fn.id() : fn.id))
|
|
22
|
+
.join(', ');
|
|
23
|
+
logger.debug(`Registering Inngest functions: ${functionIds}`);
|
|
24
|
+
// ✨ Register functions with global registry for referenceFunction() helper
|
|
25
|
+
logger.info('📝 Registering functions with global function registry...');
|
|
26
|
+
try {
|
|
27
|
+
functionReferenceHelper.globalFunctionRegistry.register(inngestFunctions);
|
|
28
|
+
logger.info(`✅ Registered ${functionReferenceHelper.globalFunctionRegistry.count} functions for referenceFunction() helper`);
|
|
29
|
+
logger.info('💡 You can now use: referenceFunction("function-id") or auto-invoke in step.invoke()');
|
|
30
|
+
}
|
|
31
|
+
catch (registryError) {
|
|
32
|
+
logger.error('❌ Error registering functions with global registry:', registryError);
|
|
33
|
+
}
|
|
34
|
+
// Register Inngest handler
|
|
35
|
+
logger.info('📞 Calling serve() to register Inngest handler...');
|
|
36
|
+
const inngestHandler = express.serve({
|
|
37
|
+
client: inngestClient,
|
|
38
|
+
functions: inngestFunctions,
|
|
39
|
+
});
|
|
40
|
+
logger.info('✅ serve() completed successfully');
|
|
41
|
+
app.use('/api/inngest', inngestHandler);
|
|
42
|
+
logger.info(`✅ Inngest handler registered at /api/inngest with ${inngestFunctions.length} functions`);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
logger.info('No Inngest functions found - handler not registered');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
logger.warn('Inngest handler registration failed:', error?.message || String(error));
|
|
50
|
+
logger.debug('Full error stack:', error?.stack || error);
|
|
51
|
+
if (error && typeof error === 'object') {
|
|
52
|
+
logger.debug('Error keys:', Object.keys(error));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}exports.setupInngestFunctions=setupInngestFunctions;//# sourceMappingURL=setup.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.cjs","sources":["../../src/inngest/setup.ts"],"sourcesContent":[null],"names":["globalFunctionRegistry","serve"],"mappings":"kIAWA;;AAEG;AACI,eAAe,qBAAqB,CACvC,OAAgB,EAChB,GAAY,EACZ,gBAA2B,EAC3B,MAAe,EAAA;AAEf,IAAA,IAAI;;QAEA,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,CAAU,gBAAgB,CAAC,CAAC;AACtE,QAAA,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;;;AAIjE,QAAA,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC;AACxD,YAAA,SAAS,EAAE,gBAAgB;AAC3B,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,QAAQ,EAAE,EAAE;AACf,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,MAAM,CAAC,IAAI,CAAC,CAAA,SAAA,EAAY,gBAAgB,CAAC,MAAM,CAAwC,sCAAA,CAAA,CAAC,CAAC;;YAGzF,MAAM,WAAW,GAAG,gBAAgB;iBAC/B,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;iBAC3B,GAAG,CAAC,CAAC,EAAE,MAAM,OAAO,EAAE,CAAC,EAAE,KAAK,UAAU,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;iBAC5D,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,YAAA,MAAM,CAAC,KAAK,CAAC,kCAAkC,WAAW,CAAA,CAAE,CAAC,CAAC;;AAG9D,YAAA,MAAM,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;AACzE,YAAA,IAAI;AACA,gBAAAA,8CAAsB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBAClD,MAAM,CAAC,IAAI,CAAC,CAAA,aAAA,EAAgBA,8CAAsB,CAAC,KAAK,CAA2C,yCAAA,CAAA,CAAC,CAAC;AACrG,gBAAA,MAAM,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC;aACvG;YAAC,OAAO,aAAa,EAAE;AACpB,gBAAA,MAAM,CAAC,KAAK,CAAC,qDAAqD,EAAE,aAAa,CAAC,CAAC;aACtF;;AAGD,YAAA,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YACjE,MAAM,cAAc,GAAGC,aAAK,CAAC;AACzB,gBAAA,MAAM,EAAE,aAAa;AACrB,gBAAA,SAAS,EAAE,gBAAgB;AAC9B,aAAA,CAAC,CAAC;AACH,YAAA,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;AAEhD,YAAA,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,CAAA,kDAAA,EAAqD,gBAAgB,CAAC,MAAM,CAAY,UAAA,CAAA,CAAC,CAAC;SACzG;aAAM;AACH,YAAA,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;SACtE;KACJ;IAAC,OAAO,KAAK,EAAE;AACZ,QAAA,MAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrF,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC;AACzD,QAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACpC,YAAA,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SACnD;KACJ;AACL"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Express } from 'express';
|
|
2
|
+
import { Container } from 'inversify';
|
|
3
|
+
import { CdmLogger } from '@cdm-logger/core';
|
|
4
|
+
import { Feature } from '@common-stack/server-core';
|
|
5
|
+
type ILogger = CdmLogger.ILogger;
|
|
6
|
+
/**
|
|
7
|
+
* Sets up Inngest functions from the Feature system and registers the handler
|
|
8
|
+
*/
|
|
9
|
+
export declare function setupInngestFunctions(modules: Feature, app: Express, serviceContainer: Container, logger: ILogger): Promise<void>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import {serve}from'inngest/express';import {globalFunctionRegistry}from'./middleware/function-reference-helper.mjs';/**
|
|
2
|
+
* Sets up Inngest functions from the Feature system and registers the handler
|
|
3
|
+
*/
|
|
4
|
+
async function setupInngestFunctions(modules, app, serviceContainer, logger) {
|
|
5
|
+
try {
|
|
6
|
+
// Get Inngest client from the container (already bound in infraModule)
|
|
7
|
+
const inngestClient = serviceContainer.get('INNGEST_CLIENT');
|
|
8
|
+
logger.info('✅ Retrieved Inngest client from service container');
|
|
9
|
+
// Load Inngest functions from all modules
|
|
10
|
+
// The improved loadInngestFunctions now handles both array and object returns
|
|
11
|
+
const inngestFunctions = await modules.loadInngestFunctions({
|
|
12
|
+
container: serviceContainer,
|
|
13
|
+
inngest: inngestClient,
|
|
14
|
+
settings: {},
|
|
15
|
+
});
|
|
16
|
+
if (inngestFunctions.length > 0) {
|
|
17
|
+
logger.info(`✅ Loaded ${inngestFunctions.length} Inngest functions from Feature system`);
|
|
18
|
+
// Log function IDs for debugging
|
|
19
|
+
const functionIds = inngestFunctions
|
|
20
|
+
.filter((fn) => fn && fn.id)
|
|
21
|
+
.map((fn) => (typeof fn.id === 'function' ? fn.id() : fn.id))
|
|
22
|
+
.join(', ');
|
|
23
|
+
logger.debug(`Registering Inngest functions: ${functionIds}`);
|
|
24
|
+
// ✨ Register functions with global registry for referenceFunction() helper
|
|
25
|
+
logger.info('📝 Registering functions with global function registry...');
|
|
26
|
+
try {
|
|
27
|
+
globalFunctionRegistry.register(inngestFunctions);
|
|
28
|
+
logger.info(`✅ Registered ${globalFunctionRegistry.count} functions for referenceFunction() helper`);
|
|
29
|
+
logger.info('💡 You can now use: referenceFunction("function-id") or auto-invoke in step.invoke()');
|
|
30
|
+
}
|
|
31
|
+
catch (registryError) {
|
|
32
|
+
logger.error('❌ Error registering functions with global registry:', registryError);
|
|
33
|
+
}
|
|
34
|
+
// Register Inngest handler
|
|
35
|
+
logger.info('📞 Calling serve() to register Inngest handler...');
|
|
36
|
+
const inngestHandler = serve({
|
|
37
|
+
client: inngestClient,
|
|
38
|
+
functions: inngestFunctions,
|
|
39
|
+
});
|
|
40
|
+
logger.info('✅ serve() completed successfully');
|
|
41
|
+
app.use('/api/inngest', inngestHandler);
|
|
42
|
+
logger.info(`✅ Inngest handler registered at /api/inngest with ${inngestFunctions.length} functions`);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
logger.info('No Inngest functions found - handler not registered');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
logger.warn('Inngest handler registration failed:', error?.message || String(error));
|
|
50
|
+
logger.debug('Full error stack:', error?.stack || error);
|
|
51
|
+
if (error && typeof error === 'object') {
|
|
52
|
+
logger.debug('Error keys:', Object.keys(error));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}export{setupInngestFunctions};//# sourceMappingURL=setup.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.mjs","sources":["../../src/inngest/setup.ts"],"sourcesContent":[null],"names":[],"mappings":"oHAWA;;AAEG;AACI,eAAe,qBAAqB,CACvC,OAAgB,EAChB,GAAY,EACZ,gBAA2B,EAC3B,MAAe,EAAA;AAEf,IAAA,IAAI;;QAEA,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,CAAU,gBAAgB,CAAC,CAAC;AACtE,QAAA,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;;;AAIjE,QAAA,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC;AACxD,YAAA,SAAS,EAAE,gBAAgB;AAC3B,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,QAAQ,EAAE,EAAE;AACf,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,MAAM,CAAC,IAAI,CAAC,CAAA,SAAA,EAAY,gBAAgB,CAAC,MAAM,CAAwC,sCAAA,CAAA,CAAC,CAAC;;YAGzF,MAAM,WAAW,GAAG,gBAAgB;iBAC/B,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;iBAC3B,GAAG,CAAC,CAAC,EAAE,MAAM,OAAO,EAAE,CAAC,EAAE,KAAK,UAAU,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;iBAC5D,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,YAAA,MAAM,CAAC,KAAK,CAAC,kCAAkC,WAAW,CAAA,CAAE,CAAC,CAAC;;AAG9D,YAAA,MAAM,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;AACzE,YAAA,IAAI;AACA,gBAAA,sBAAsB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBAClD,MAAM,CAAC,IAAI,CAAC,CAAA,aAAA,EAAgB,sBAAsB,CAAC,KAAK,CAA2C,yCAAA,CAAA,CAAC,CAAC;AACrG,gBAAA,MAAM,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC;aACvG;YAAC,OAAO,aAAa,EAAE;AACpB,gBAAA,MAAM,CAAC,KAAK,CAAC,qDAAqD,EAAE,aAAa,CAAC,CAAC;aACtF;;AAGD,YAAA,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YACjE,MAAM,cAAc,GAAG,KAAK,CAAC;AACzB,gBAAA,MAAM,EAAE,aAAa;AACrB,gBAAA,SAAS,EAAE,gBAAgB;AAC9B,aAAA,CAAC,CAAC;AACH,YAAA,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;AAEhD,YAAA,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,CAAA,kDAAA,EAAqD,gBAAgB,CAAC,MAAM,CAAY,UAAA,CAAA,CAAC,CAAC;SACzG;aAAM;AACH,YAAA,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;SACtE;KACJ;IAAC,OAAO,KAAK,EAAE;AACZ,QAAA,MAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrF,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,CAAC;AACzD,QAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACpC,YAAA,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SACnD;KACJ;AACL"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ServiceBroker } from 'moleculer';
|
|
1
2
|
export type GraphqlRequestContext = {
|
|
2
3
|
overallCachePolicy: {
|
|
3
4
|
scope: string;
|
|
@@ -10,6 +11,10 @@ export type GraphqlRequestContext = {
|
|
|
10
11
|
currentPageUriSegments: {
|
|
11
12
|
authority: string;
|
|
12
13
|
};
|
|
14
|
+
tenant?: string;
|
|
13
15
|
};
|
|
14
16
|
queriesToInvalidate: string[];
|
|
17
|
+
tenantId?: string;
|
|
18
|
+
accountId?: string;
|
|
19
|
+
moleculerBroker?: ServiceBroker;
|
|
15
20
|
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { redisClientMiddleware } from './redis-client';
|
|
2
|
+
export { contextServicesMiddleware } from './services';
|
|
3
|
+
export { corsMiddleware } from './cors';
|
|
4
|
+
export { errorMiddleware } from './error';
|
|
5
|
+
export { sentryMiddleware, sentryErrorHandlerMiddleware } from './sentry';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';/**
|
|
2
|
+
* Redis Client Middleware
|
|
3
|
+
*
|
|
4
|
+
* This middleware attaches the Redis client to the request object,
|
|
5
|
+
* making it available for session storage and other Redis operations.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Creates middleware that attaches Redis client to request object
|
|
9
|
+
* @param redisClient - The Redis client instance
|
|
10
|
+
* @returns Express middleware function
|
|
11
|
+
*/
|
|
12
|
+
function redisClientMiddleware(redisClient) {
|
|
13
|
+
return (req, res, next) => {
|
|
14
|
+
// Attach Redis client to request object
|
|
15
|
+
req.redisClient = redisClient;
|
|
16
|
+
next();
|
|
17
|
+
};
|
|
18
|
+
}exports.redisClientMiddleware=redisClientMiddleware;//# sourceMappingURL=redis-client.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis-client.cjs","sources":["../../src/middleware/redis-client.ts"],"sourcesContent":[null],"names":[],"mappings":"aAAA;;;;;AAKG;AAQH;;;;AAIG;AACG,SAAU,qBAAqB,CAAC,WAAgB,EAAA;AAClD,IAAA,OAAO,CAAC,GAAuB,EAAE,GAAa,EAAE,IAAkB,KAAI;;AAElE,QAAA,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;AAC9B,QAAA,IAAI,EAAE,CAAC;AACX,KAAC,CAAC;AACN"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Redis Client Middleware
|
|
3
|
+
*
|
|
4
|
+
* This middleware attaches the Redis client to the request object,
|
|
5
|
+
* making it available for session storage and other Redis operations.
|
|
6
|
+
*/
|
|
7
|
+
import { Request, Response, NextFunction } from 'express';
|
|
8
|
+
export interface RedisClientRequest extends Request {
|
|
9
|
+
redisClient?: any;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Creates middleware that attaches Redis client to request object
|
|
13
|
+
* @param redisClient - The Redis client instance
|
|
14
|
+
* @returns Express middleware function
|
|
15
|
+
*/
|
|
16
|
+
export declare function redisClientMiddleware(redisClient: any): (req: RedisClientRequest, res: Response, next: NextFunction) => void;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Redis Client Middleware
|
|
3
|
+
*
|
|
4
|
+
* This middleware attaches the Redis client to the request object,
|
|
5
|
+
* making it available for session storage and other Redis operations.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Creates middleware that attaches Redis client to request object
|
|
9
|
+
* @param redisClient - The Redis client instance
|
|
10
|
+
* @returns Express middleware function
|
|
11
|
+
*/
|
|
12
|
+
function redisClientMiddleware(redisClient) {
|
|
13
|
+
return (req, res, next) => {
|
|
14
|
+
// Attach Redis client to request object
|
|
15
|
+
req.redisClient = redisClient;
|
|
16
|
+
next();
|
|
17
|
+
};
|
|
18
|
+
}export{redisClientMiddleware};//# sourceMappingURL=redis-client.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis-client.mjs","sources":["../../src/middleware/redis-client.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;AAKG;AAQH;;;;AAIG;AACG,SAAU,qBAAqB,CAAC,WAAgB,EAAA;AAClD,IAAA,OAAO,CAAC,GAAuB,EAAE,GAAa,EAAE,IAAkB,KAAI;;AAElE,QAAA,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;AAC9B,QAAA,IAAI,EAAE,CAAC;AACX,KAAC,CAAC;AACN"}
|
|
@@ -16,6 +16,7 @@ const isCacheable = (requestContext) => {
|
|
|
16
16
|
// to support test cases
|
|
17
17
|
requestContext.overallCachePolicy = {};
|
|
18
18
|
}
|
|
19
|
+
// eslint-disable-next-line no-param-reassign
|
|
19
20
|
requestContext.overallCachePolicy.maxAge = cache.maxAge;
|
|
20
21
|
return cache.maxAge > 0;
|
|
21
22
|
};
|
|
@@ -33,7 +34,7 @@ const generateCacheKey = ({ logger, cacheKeyGenerator }) => (requestContext) =>
|
|
|
33
34
|
});
|
|
34
35
|
const { scope } = cacheControlDirective ?? {};
|
|
35
36
|
const isPrivate = scope?.toLowerCase() === 'private';
|
|
36
|
-
const tenantId = serverCore.extractTenantId(req?.currentPageUriSegments?.authority);
|
|
37
|
+
const tenantId = req.tenant ?? serverCore.extractTenantId(req?.currentPageUriSegments?.authority);
|
|
37
38
|
const cacheKey = serverCore.generateQueryCacheKey({
|
|
38
39
|
query,
|
|
39
40
|
variables,
|
|
@@ -49,7 +50,6 @@ const generateCacheKey = ({ logger, cacheKeyGenerator }) => (requestContext) =>
|
|
|
49
50
|
return cacheKey;
|
|
50
51
|
}
|
|
51
52
|
catch (e) {
|
|
52
|
-
// `this.logger` won't work here
|
|
53
53
|
console.warn('GenerateCacheKey Failed %s', e.message);
|
|
54
54
|
return cacheKey;
|
|
55
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responseCachePlugin.cjs","sources":["../../src/plugins/responseCachePlugin.ts"],"sourcesContent":[null],"names":["getDirectiveArgsFromSchema","CACHE_CONTROL_DIRECTIVE","extractTenantId","generateQueryCacheKey","isEmpty"],"mappings":"0JAcA,MAAM,WAAW,GAAI,iBAAyB,CAAC,OAAO,IAAI,iBAAiB,CAAC;AAO/D,MAAA,WAAW,GAAG,CAAC,cAA4D,KAAI;AACxF,IAAA,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;IAC5C,MAAM,KAAK,GAAGA,qCAA0B,CAAC;QACrC,MAAM;QACN,QAAQ;AACR,QAAA,aAAa,EAAEC,kCAAuB;AACzC,KAAA,CAAC,CAAC;AACH,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,KAAK,CAAC;IACzB,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC9B,QAAA,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;KACxB;AACD,IAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE;;;AAGnC,QAAA,cAAsB,CAAC,kBAAkB,GAAG,EAAE,CAAC;KACnD
|
|
1
|
+
{"version":3,"file":"responseCachePlugin.cjs","sources":["../../src/plugins/responseCachePlugin.ts"],"sourcesContent":[null],"names":["getDirectiveArgsFromSchema","CACHE_CONTROL_DIRECTIVE","extractTenantId","generateQueryCacheKey","isEmpty"],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ const isCacheable = (requestContext) => {
|
|
|
16
16
|
// to support test cases
|
|
17
17
|
requestContext.overallCachePolicy = {};
|
|
18
18
|
}
|
|
19
|
+
// eslint-disable-next-line no-param-reassign
|
|
19
20
|
requestContext.overallCachePolicy.maxAge = cache.maxAge;
|
|
20
21
|
return cache.maxAge > 0;
|
|
21
22
|
};
|
|
@@ -33,7 +34,7 @@ const generateCacheKey = ({ logger, cacheKeyGenerator }) => (requestContext) =>
|
|
|
33
34
|
});
|
|
34
35
|
const { scope } = cacheControlDirective ?? {};
|
|
35
36
|
const isPrivate = scope?.toLowerCase() === 'private';
|
|
36
|
-
const tenantId = extractTenantId(req?.currentPageUriSegments?.authority);
|
|
37
|
+
const tenantId = req.tenant ?? extractTenantId(req?.currentPageUriSegments?.authority);
|
|
37
38
|
const cacheKey = generateQueryCacheKey({
|
|
38
39
|
query,
|
|
39
40
|
variables,
|
|
@@ -49,7 +50,6 @@ const generateCacheKey = ({ logger, cacheKeyGenerator }) => (requestContext) =>
|
|
|
49
50
|
return cacheKey;
|
|
50
51
|
}
|
|
51
52
|
catch (e) {
|
|
52
|
-
// `this.logger` won't work here
|
|
53
53
|
console.warn('GenerateCacheKey Failed %s', e.message);
|
|
54
54
|
return cacheKey;
|
|
55
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responseCachePlugin.mjs","sources":["../../src/plugins/responseCachePlugin.ts"],"sourcesContent":[null],"names":[],"mappings":"qOAcA,MAAM,WAAW,GAAI,iBAAyB,CAAC,OAAO,IAAI,iBAAiB,CAAC;AAO/D,MAAA,WAAW,GAAG,CAAC,cAA4D,KAAI;AACxF,IAAA,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;IAC5C,MAAM,KAAK,GAAG,0BAA0B,CAAC;QACrC,MAAM;QACN,QAAQ;AACR,QAAA,aAAa,EAAE,uBAAuB;AACzC,KAAA,CAAC,CAAC;AACH,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,KAAK,CAAC;IACzB,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC9B,QAAA,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;KACxB;AACD,IAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE;;;AAGnC,QAAA,cAAsB,CAAC,kBAAkB,GAAG,EAAE,CAAC;KACnD
|
|
1
|
+
{"version":3,"file":"responseCachePlugin.mjs","sources":["../../src/plugins/responseCachePlugin.ts"],"sourcesContent":[null],"names":[],"mappings":"qOAcA,MAAM,WAAW,GAAI,iBAAyB,CAAC,OAAO,IAAI,iBAAiB,CAAC;AAO/D,MAAA,WAAW,GAAG,CAAC,cAA4D,KAAI;AACxF,IAAA,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;IAC5C,MAAM,KAAK,GAAG,0BAA0B,CAAC;QACrC,MAAM;QACN,QAAQ;AACR,QAAA,aAAa,EAAE,uBAAuB;AACzC,KAAA,CAAC,CAAC;AACH,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,KAAK,CAAC;IACzB,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC9B,QAAA,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;KACxB;AACD,IAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE;;;AAGnC,QAAA,cAAsB,CAAC,kBAAkB,GAAG,EAAE,CAAC;KACnD;;IAED,cAAc,CAAC,kBAAkB,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AACxD,IAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5B,EAAE;AAEW,MAAA,gBAAgB,GACzB,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAA4B,KACxD,CAAC,cAA4D,KAAY;AACrE,IAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE;AAC9B,QAAA,OAAO,IAAI,CAAC;KACf;IACD,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;IACnE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,YAAY,IAAI,EAAE,CAAC;AACzC,IAAA,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IACrC,MAAM,qBAAqB,GAAG,0BAA0B,CAAC;QACrD,MAAM;QACN,QAAQ;AACR,QAAA,aAAa,EAAE,uBAAuB;AACzC,KAAA,CAAC,CAAC;AACH,IAAA,MAAM,EAAE,KAAK,EAAE,GAAG,qBAAqB,IAAI,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,KAAK,EAAE,WAAW,EAAE,KAAK,SAAS,CAAC;AACrD,IAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC;IACvF,MAAM,QAAQ,GAAG,qBAAqB,CAAC;QACnC,KAAK;QACL,SAAS;QACT,MAAM;AACN,QAAA,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,IAAI,IAAI,GAAG,IAAI;QAC5C,QAAQ;AACX,KAAA,CAAC,CAAC;AACH,IAAA,IAAI;AACA,QAAA,IAAI,OAAO,iBAAiB,KAAK,UAAU,EAAE;YACzC,MAAM,YAAY,GAAG,iBAAiB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;YACjE,OAAO,YAAY,IAAI,QAAQ,CAAC;SACnC;AACD,QAAA,OAAO,QAAQ,CAAC;KACnB;IAAC,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AACtD,QAAA,OAAO,QAAQ,CAAC;KACnB;AACL,EAAE;AACC,MAAM,mBAAmB,GAAG,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAA4B,KACvF,WAAW,CAAC;AACR,IAAA,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC;IACjF,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;AACjE,IAAA,kBAAkB,EAAE,CAAC,GAAG;;AAEpB,IAAA,WAAW,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC;AAC5E,CAAA"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
'use strict';var express=require('express'),bodyParser=require('body-parser'),error=require('../middleware/error.cjs'),services=require('../middleware/services.cjs'),sentry=require('../middleware/sentry.cjs'),cors=require('../middleware/cors.cjs');function _interopNamespaceDefault(e){var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var bodyParser__namespace=/*#__PURE__*/_interopNamespaceDefault(bodyParser);/* eslint-disable @typescript-eslint/no-var-requires */
|
|
2
|
-
function expressApp(modules, options, middlewares, http) {
|
|
1
|
+
'use strict';var express=require('express'),bodyParser=require('body-parser'),error=require('../middleware/error.cjs'),services=require('../middleware/services.cjs'),sentry=require('../middleware/sentry.cjs'),redisClient=require('../middleware/redis-client.cjs'),cors=require('../middleware/cors.cjs');function _interopNamespaceDefault(e){var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var bodyParser__namespace=/*#__PURE__*/_interopNamespaceDefault(bodyParser);/* eslint-disable @typescript-eslint/no-var-requires */
|
|
2
|
+
function expressApp(modules, options, middlewares, http, redisClient$1) {
|
|
3
3
|
const app = express();
|
|
4
|
+
// FIRST PRIORITY: Add Redis client middleware at the very top
|
|
5
|
+
// This ensures req.redisClient is available to ALL downstream middleware
|
|
6
|
+
if (redisClient$1) {
|
|
7
|
+
app.use(redisClient.redisClientMiddleware(redisClient$1));
|
|
8
|
+
}
|
|
9
|
+
app.use(services.contextServicesMiddleware(options.createContext, options.serviceContext));
|
|
4
10
|
for (const applyBeforeware of modules.beforewares) {
|
|
5
11
|
applyBeforeware(app);
|
|
6
12
|
}
|
|
7
|
-
app.use(services.contextServicesMiddleware(options.createContext, options.serviceContext));
|
|
8
13
|
// Don't rate limit heroku
|
|
9
14
|
app.enable('trust proxy');
|
|
10
15
|
app.use(sentry.sentryMiddleware);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpressApp.cjs","sources":["../../src/servers/ExpressApp.ts"],"sourcesContent":[null],"names":["contextServicesMiddleware","sentryMiddleware","corsMiddleware","bodyParser","errorMiddleware","sentryErrorHandlerMiddleware"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExpressApp.cjs","sources":["../../src/servers/ExpressApp.ts"],"sourcesContent":[null],"names":["redisClient","redisClientMiddleware","contextServicesMiddleware","sentryMiddleware","corsMiddleware","bodyParser","errorMiddleware","sentryErrorHandlerMiddleware"],"mappings":"wpBAAA;AAWM,SAAU,UAAU,CAAC,OAAgB,EAAE,OAAuB,EAAE,WAAW,EAAE,IAAK,EAAEA,aAAY,EAAA;AAClG,IAAA,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;;;IAItB,IAAIA,aAAW,EAAE;QACb,GAAG,CAAC,GAAG,CAACC,iCAAqB,CAACD,aAAW,CAAC,CAAC,CAAC;KAC/C;AAED,IAAA,GAAG,CAAC,GAAG,CAACE,kCAAyB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;AAClF,IAAA,KAAK,MAAM,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE;QAC/C,eAAe,CAAC,GAAG,CAAC,CAAC;KACxB;;AAGD,IAAA,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAE1B,IAAA,GAAG,CAAC,GAAG,CAACC,uBAAgB,CAAC,CAAC;AAE1B,IAAA,IAAI,WAAW,KAAK,IAAI,EAAE;AACtB,QAAA,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;KACxB;AAED,IAAA,GAAG,CAAC,GAAG,CAACC,mBAAc,CAAC,CAAC;IACxB,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,KAAI;AACvB,QAAA,GAAG,CAAC,MAAM,CAAC,kCAAkC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,QAAA,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,qBAAqB,CAAC,CAAC;AAClE,QAAA,GAAG,CAAC,MAAM,CACN,8BAA8B,EAC9B,6EAA6E,CAChF,CAAC;AACF,QAAA,IAAI,EAAE,CAAC;AACX,KAAC,CAAC,CAAC;AAEH,IAAA,GAAG,CAAC,GAAG,CACHC,qBAAU,CAAC,IAAI,CAAC;AACZ,QAAA,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAI;;AAErB,YAAA,GAAW,CAAC,OAAO,GAAG,GAAG,CAAC;SAC9B;AACJ,KAAA,CAAC,CACL,CAAC;IACF,GAAG,CAAC,GAAG,CAACA,qBAAU,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAEzF,IAAA,KAAK,MAAM,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE;QAC/C,eAAe,CAAC,GAAG,CAAC,CAAC;KACxB;IAED,IAAI,OAAO,EAAE;AACT,QAAA,GAAG,CAAC,GAAG,CAACC,qBAAe,CAAC,CAAC;KAC5B;AAED,IAAA,GAAG,CAAC,GAAG,CAACC,mCAA4B,CAAC,CAAC;AAEtC,IAAA,OAAO,GAAG,CAAC;AACf"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Feature } from '@common-stack/server-core';
|
|
2
2
|
import { IModuleService } from '../interfaces';
|
|
3
|
-
export declare function expressApp(modules: Feature, options: IModuleService, middlewares: any, http?: any): import("express-serve-static-core").Express;
|
|
3
|
+
export declare function expressApp(modules: Feature, options: IModuleService, middlewares: any, http?: any, redisClient?: any): import("express-serve-static-core").Express;
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import express from'express';import*as bodyParser from'body-parser';import {errorMiddleware}from'../middleware/error.mjs';import {contextServicesMiddleware}from'../middleware/services.mjs';import {sentryMiddleware,sentryErrorHandlerMiddleware}from'../middleware/sentry.mjs';import {corsMiddleware}from'../middleware/cors.mjs';/* eslint-disable @typescript-eslint/no-var-requires */
|
|
2
|
-
function expressApp(modules, options, middlewares, http) {
|
|
1
|
+
import express from'express';import*as bodyParser from'body-parser';import {errorMiddleware}from'../middleware/error.mjs';import {contextServicesMiddleware}from'../middleware/services.mjs';import {sentryMiddleware,sentryErrorHandlerMiddleware}from'../middleware/sentry.mjs';import {redisClientMiddleware}from'../middleware/redis-client.mjs';import {corsMiddleware}from'../middleware/cors.mjs';/* eslint-disable @typescript-eslint/no-var-requires */
|
|
2
|
+
function expressApp(modules, options, middlewares, http, redisClient) {
|
|
3
3
|
const app = express();
|
|
4
|
+
// FIRST PRIORITY: Add Redis client middleware at the very top
|
|
5
|
+
// This ensures req.redisClient is available to ALL downstream middleware
|
|
6
|
+
if (redisClient) {
|
|
7
|
+
app.use(redisClientMiddleware(redisClient));
|
|
8
|
+
}
|
|
9
|
+
app.use(contextServicesMiddleware(options.createContext, options.serviceContext));
|
|
4
10
|
for (const applyBeforeware of modules.beforewares) {
|
|
5
11
|
applyBeforeware(app);
|
|
6
12
|
}
|
|
7
|
-
app.use(contextServicesMiddleware(options.createContext, options.serviceContext));
|
|
8
13
|
// Don't rate limit heroku
|
|
9
14
|
app.enable('trust proxy');
|
|
10
15
|
app.use(sentryMiddleware);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpressApp.mjs","sources":["../../src/servers/ExpressApp.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExpressApp.mjs","sources":["../../src/servers/ExpressApp.ts"],"sourcesContent":[null],"names":[],"mappings":"yYAAA;AAWM,SAAU,UAAU,CAAC,OAAgB,EAAE,OAAuB,EAAE,WAAW,EAAE,IAAK,EAAE,WAAY,EAAA;AAClG,IAAA,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;;;IAItB,IAAI,WAAW,EAAE;QACb,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,CAAC;KAC/C;AAED,IAAA,GAAG,CAAC,GAAG,CAAC,yBAAyB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;AAClF,IAAA,KAAK,MAAM,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE;QAC/C,eAAe,CAAC,GAAG,CAAC,CAAC;KACxB;;AAGD,IAAA,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAE1B,IAAA,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAE1B,IAAA,IAAI,WAAW,KAAK,IAAI,EAAE;AACtB,QAAA,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;KACxB;AAED,IAAA,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACxB,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,KAAI;AACvB,QAAA,GAAG,CAAC,MAAM,CAAC,kCAAkC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,QAAA,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,qBAAqB,CAAC,CAAC;AAClE,QAAA,GAAG,CAAC,MAAM,CACN,8BAA8B,EAC9B,6EAA6E,CAChF,CAAC;AACF,QAAA,IAAI,EAAE,CAAC;AACX,KAAC,CAAC,CAAC;AAEH,IAAA,GAAG,CAAC,GAAG,CACH,UAAU,CAAC,IAAI,CAAC;AACZ,QAAA,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAI;;AAErB,YAAA,GAAW,CAAC,OAAO,GAAG,GAAG,CAAC;SAC9B;AACJ,KAAA,CAAC,CACL,CAAC;IACF,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAEzF,IAAA,KAAK,MAAM,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE;QAC/C,eAAe,CAAC,GAAG,CAAC,CAAC;KACxB;IAED,IAAI,OAAO,EAAE;AACT,QAAA,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;KAC5B;AAED,IAAA,GAAG,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AAEtC,IAAA,OAAO,GAAG,CAAC;AACf"}
|
|
@@ -18,9 +18,10 @@ class GraphqlServer {
|
|
|
18
18
|
enableSubscription;
|
|
19
19
|
cacheKeyGenerator;
|
|
20
20
|
invalidateCacheKeyGenerator;
|
|
21
|
+
plugins;
|
|
21
22
|
logger;
|
|
22
23
|
graphqlWsServer;
|
|
23
|
-
constructor(app, httpServer, redisClient, moduleService, enableSubscription = true, cacheKeyGenerator, invalidateCacheKeyGenerator) {
|
|
24
|
+
constructor(app, httpServer, redisClient, moduleService, enableSubscription = true, cacheKeyGenerator, invalidateCacheKeyGenerator, plugins) {
|
|
24
25
|
this.app = app;
|
|
25
26
|
this.httpServer = httpServer;
|
|
26
27
|
this.redisClient = redisClient;
|
|
@@ -28,6 +29,7 @@ class GraphqlServer {
|
|
|
28
29
|
this.enableSubscription = enableSubscription;
|
|
29
30
|
this.cacheKeyGenerator = cacheKeyGenerator;
|
|
30
31
|
this.invalidateCacheKeyGenerator = invalidateCacheKeyGenerator;
|
|
32
|
+
this.plugins = plugins;
|
|
31
33
|
this.logger = this.moduleService.logger.child({ className: 'GraphqlServer' });
|
|
32
34
|
if (enableSubscription) {
|
|
33
35
|
const wsServer = new ws.WebSocketServer({
|
|
@@ -39,7 +41,9 @@ class GraphqlServer {
|
|
|
39
41
|
}
|
|
40
42
|
async initialize() {
|
|
41
43
|
this.logger.info('GraphqlServer initializing...');
|
|
42
|
-
this.graphqlWsServer
|
|
44
|
+
if (this.graphqlWsServer) {
|
|
45
|
+
this.graphqlWsServer.create();
|
|
46
|
+
}
|
|
43
47
|
const apolloServer = this.configureApolloServer();
|
|
44
48
|
await apolloServer.start();
|
|
45
49
|
const corsOptions = {
|
|
@@ -122,6 +126,7 @@ class GraphqlServer {
|
|
|
122
126
|
cacheControl.ApolloServerPluginCacheControl(),
|
|
123
127
|
invalidateCachePlugin.invalidateCachePlugin({ cache: this.redisClient, invalidateCacheKeyGenerator }),
|
|
124
128
|
responseCachePlugin.responseCachePlugin({ logger, cacheKeyGenerator }),
|
|
129
|
+
...(this.plugins ?? []),
|
|
125
130
|
],
|
|
126
131
|
};
|
|
127
132
|
if (this.enableSubscription) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphqlServer.cjs","sources":["../../src/servers/GraphqlServer.ts"],"sourcesContent":[null],"names":["WebSocketServer","config","GraphqlWs","expressMiddleware","KeyvAdapter","ApolloServerPluginDrainHttpServer","ApolloServerPluginCacheControl","invalidateCachePlugin","responseCachePlugin","ApolloServer"],"mappings":"
|
|
1
|
+
{"version":3,"file":"GraphqlServer.cjs","sources":["../../src/servers/GraphqlServer.ts"],"sourcesContent":[null],"names":["WebSocketServer","config","GraphqlWs","expressMiddleware","KeyvAdapter","ApolloServerPluginDrainHttpServer","ApolloServerPluginCacheControl","invalidateCachePlugin","responseCachePlugin","ApolloServer"],"mappings":"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"}
|
|
@@ -5,18 +5,20 @@ import { Express } from 'express';
|
|
|
5
5
|
import * as http from 'http';
|
|
6
6
|
import { InvalidationKeyGenerator } from '../plugins';
|
|
7
7
|
import { IModuleService } from '../interfaces';
|
|
8
|
+
import type { ApolloServerPlugin } from '@apollo/server';
|
|
8
9
|
export type KeyGenerator = (context: GraphQLRequestContext<unknown>, cacheKey?: string) => string;
|
|
9
10
|
export declare class GraphqlServer {
|
|
10
|
-
private app;
|
|
11
|
-
private httpServer;
|
|
12
|
-
private redisClient;
|
|
13
|
-
private moduleService;
|
|
14
|
-
private enableSubscription;
|
|
11
|
+
private readonly app;
|
|
12
|
+
private readonly httpServer;
|
|
13
|
+
private readonly redisClient;
|
|
14
|
+
private readonly moduleService;
|
|
15
|
+
private readonly enableSubscription;
|
|
15
16
|
private readonly cacheKeyGenerator?;
|
|
16
17
|
private readonly invalidateCacheKeyGenerator?;
|
|
18
|
+
private readonly plugins?;
|
|
17
19
|
private logger;
|
|
18
20
|
private graphqlWsServer;
|
|
19
|
-
constructor(app: Express, httpServer: http.Server, redisClient: IORedis.Redis | IORedis.Cluster, moduleService: IModuleService, enableSubscription?: boolean, cacheKeyGenerator?: KeyGenerator, invalidateCacheKeyGenerator?: InvalidationKeyGenerator);
|
|
21
|
+
constructor(app: Express, httpServer: http.Server, redisClient: IORedis.Redis | IORedis.Cluster, moduleService: IModuleService, enableSubscription?: boolean, cacheKeyGenerator?: KeyGenerator, invalidateCacheKeyGenerator?: InvalidationKeyGenerator, plugins?: ApolloServerPlugin<any>[]);
|
|
20
22
|
initialize(): Promise<void>;
|
|
21
23
|
getUserIpAddress(req: any): any;
|
|
22
24
|
private configureApolloServer;
|